8000 fallback: do not reset the buffer completely in between of iterations · nresare/msgpack-python@7eb371f · GitHub
[go: up one dir, main page]

Skip to content

Commit 7eb371f

Browse files
committed
fallback: do not reset the buffer completely in between of iterations
1 parent ba8cf1c commit 7eb371f

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

msgpack/fallback.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,16 @@ def feed(self, next_bytes):
201201
self._fb_buf_n += len(next_bytes)
202202
self._fb_buffers.append(next_bytes)
203203

204+
def _fb_sloppy_consume(self):
205+
""" Gets rid of some of the used parts of the buffer. """
206+
if self._fb_buf_i:
207+
for i in xrange(self._fb_buf_i):
208+
self._fb_buf_n -= len(self._fb_buffers[i])
209+
self._fb_buffers = self._fb_buffers[self._fb_buf_i:]
210+
self._fb_buf_i = 0
211+
204212
def _fb_consume(self):
213+
""" Gets rid of the used parts of the buffer. """
205214
if self._fb_buf_i:
206215
for i in xrange(self._fb_buf_i):
207216
self._fb_buf_n -= len(self._fb_buffers[i])
@@ -446,9 +455,10 @@ def _fb_unpack(self, execute=EX_CONSTRUCT, write_bytes=None):
446455
def next(self):
447456
try:
448457
ret = self._fb_unpack(EX_CONSTRUCT, None)
449-
self._fb_consume()
458+
self._fb_sloppy_consume()
450459
return ret
451460
except OutOfData:
461+
self._fb_consume()
452462
raise StopIteration
453463
__next__ = next
454464

0 commit comments

Comments
 (0)
0