mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-03-19 21:18:23 +01:00
Fix: Unpacker.unpack() may raise StopIteration before unpacking large object when deserializing from file.
This commit is contained in:
parent
6083bad5ff
commit
0db5e0439d
@ -265,7 +265,11 @@ cdef class Unpacker(object):
|
|||||||
cdef Py_ssize_t add_size
|
cdef Py_ssize_t add_size
|
||||||
|
|
||||||
if self.file_like is not None:
|
if self.file_like is not None:
|
||||||
self.waiting_bytes.append(self.file_like.read(self.read_size))
|
next_bytes = self.file_like.read(self.read_size)
|
||||||
|
if next_bytes:
|
||||||
|
self.waiting_bytes.append(next_bytes)
|
||||||
|
else:
|
||||||
|
self.file_like = None
|
||||||
|
|
||||||
if not self.waiting_bytes:
|
if not self.waiting_bytes:
|
||||||
return
|
return
|
||||||
@ -307,6 +311,8 @@ cdef class Unpacker(object):
|
|||||||
if ret == 1:
|
if ret == 1:
|
||||||
return template_data(&self.ctx)
|
return template_data(&self.ctx)
|
||||||
elif ret == 0:
|
elif ret == 0:
|
||||||
|
if self.file_like is not None:
|
||||||
|
return self.unpack()
|
||||||
raise StopIteration, "No more unpack data."
|
raise StopIteration, "No more unpack data."
|
||||||
else:
|
else:
|
||||||
raise ValueError, "Unpack failed."
|
raise ValueError, "Unpack failed."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user