reraising ValueError from unpack.h as UnpackValueError

This commit is contained in:
palaviv 2016-02-12 15:37:39 +02:00
parent d44063119b
commit 1183eff688
1 changed files with 19 additions and 16 deletions

View File

@ -397,24 +397,27 @@ cdef class Unpacker(object):
else: else:
raise OutOfData("No more data to unpack.") raise OutOfData("No more data to unpack.")
ret = execute(&self.ctx, self.buf, self.buf_tail, &self.buf_head) try:
if write_bytes is not None: ret = execute(&self.ctx, self.buf, self.buf_tail, &self.buf_head)
write_bytes(PyBytes_FromStringAndSize(self.buf + prev_head, self.buf_head - prev_head)) if write_bytes is not None:
write_bytes(PyBytes_FromStringAndSize(self.buf + prev_head, self.buf_head - prev_head))
if ret == 1: if ret == 1:
obj = unpack_data(&self.ctx) obj = unpack_data(&self.ctx)
unpack_init(&self.ctx) unpack_init(&self.ctx)
return obj return obj
elif ret == 0: elif ret == 0:
if self.file_like is not None: if self.file_like is not None:
self.read_from_file() self.read_from_file()
continue continue
if iter: if iter:
raise StopIteration("No more data to unpack.") raise StopIteration("No more data to unpack.")
else:
raise OutOfData("No more data to unpack.")
else: else:
raise OutOfData("No more data to unpack.") raise UnpackValueError("Unpack failed: error = %d" % (ret,))
else: except ValueError as e:
raise ValueError("Unpack failed: error = %d" % (ret,)) raise UnpackValueError(e)
def read_bytes(self, Py_ssize_t nbytes): def read_bytes(self, Py_ssize_t nbytes):
"""Read a specified number of raw bytes from the stream""" """Read a specified number of raw bytes from the stream"""