Skip to content

Commit b940802

Browse files
committed
fallback: two fixes for raising ExtraData
1 parent 6fa0f46 commit b940802

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

msgpack/fallback.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ def unpack(stream, object_hook=None, list_hook=None, use_list=True,
7171
use_list=use_list, encoding=encoding, unicode_errors=unicode_errors,
7272
object_pairs_hook=object_pairs_hook)
7373
ret = unpacker._fb_unpack()
74-
unpacker._fb_check_for_extradata()
74+
if unpacker._fb_got_extradata():
75+
raise ExtraData(ret, unpacker._fb_get_extradata())
7576
return ret
7677

7778
def unpackb(packed, object_hook=None, list_hook=None, use_list=True,
@@ -85,7 +86,8 @@ def unpackb(packed, object_hook=None, list_hook=None, use_list=True,
8586
object_pairs_hook=object_pairs_hook)
8687
unpacker.feed(packed)
8788
ret = unpacker._fb_unpack()
88-
unpacker._fb_check_for_extradata()
89+
if unpacker._fb_got_extradata():
90+
raise ExtraData(ret, unpacker._fb_get_extradata())
8991
return ret
9092

9193
class Unpacker(object):
@@ -192,15 +194,16 @@ def _fb_consume(self):
192194
self._fb_buf_i = 0
193195
self._fb_buf_n = sum(map(len, self._fb_buffers))
194196

195-
def _fb_check_for_extradata(self):
197+
def _fb_got_extradata(self):
196198
if self._fb_buf_i != len(self._fb_buffers):
197-
raise ExtraData
199+
return True
198200
if self._fb_feeding:
199-
return
201+
return False
200202
if not self.file_like:
201-
return
202-
if not self.file_like.read(1):
203-
raise ExtraData
203+
return False
204+
if self.file_like.read(1):
205+
return True
206+
return False
204207

205208
def __iter__(self):
206209
return self
@@ -216,6 +219,12 @@ def next(self):
216219
def read_bytes(self, n):
217220
return self._fb_read(n)
218221

222+
def _fb_get_extradata(self):
223+
bufs = self._fb_buffers[self._fb_buf_i:]
224+
if bufs:
225+
bufs[0] = bufs[0][self._fb_buf_o:]
226+
return ''.join(bufs)
227+
219228
def _fb_read(self, n, write_bytes=None):
220229
ret = ''
221230
while len(ret) != n:

0 commit comments

Comments
 (0)