@@ -397,24 +397,27 @@ cdef class Unpacker(object):
397
397
else :
398
398
raise OutOfData(" No more data to unpack." )
399
399
400
- ret = execute(& self .ctx, self .buf, self .buf_tail, & self .buf_head)
401
- if write_bytes is not None :
402
- write_bytes(PyBytes_FromStringAndSize(self .buf + prev_head, self .buf_head - prev_head))
403
-
404
- if ret == 1 :
405
- obj = unpack_data(& self .ctx)
406
- unpack_init(& self .ctx)
407
- return obj
408
- elif ret == 0 :
409
- if self .file_like is not None :
410
- self .read_from_file()
411
- continue
412
- if iter :
413
- raise StopIteration (" No more data to unpack." )
400
+ try :
401
+ ret = execute(& self .ctx, self .buf, self .buf_tail, & self .buf_head)
402
+ if write_bytes is not None :
403
+ write_bytes(PyBytes_FromStringAndSize(self .buf + prev_head, self .buf_head - prev_head))
404
+
405
+ if ret == 1 :
406
+ obj = unpack_data(& self .ctx)
407
+ unpack_init(& self .ctx)
408
+ return obj
409
+ elif ret == 0 :
410
+ if self .file_like is not None :
411
+ self .read_from_file()
412
+ continue
413
+ if iter :
414
+ raise StopIteration (" No more data to unpack." )
415
+ else :
416
+ raise OutOfData(" No more data to unpack." )
414
417
else :
415
- raise OutOfData( " No more data to unpack. " )
416
- else :
417
- raise ValueError ( " Unpack failed: error = %d " % (ret,) )
418
+ raise UnpackValueError( " Unpack failed: error = %d " % (ret,) )
419
+ except ValueError as e :
420
+ raise UnpackValueError(e )
418
421
419
422
def read_bytes (self , Py_ssize_t nbytes ):
420
423
""" Read a specified number of raw bytes from the stream"""
0 commit comments