@@ -397,24 +397,27 @@ cdef class Unpacker(object):
397397 else :
398398 raise OutOfData(" No more data to unpack." )
399399
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." )
414417 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 )
418421
419422 def read_bytes (self , Py_ssize_t nbytes ):
420423 """ Read a specified number of raw bytes from the stream"""
0 commit comments