mirror of
https://github.com/msgpack/msgpack-python.git
synced 2025-10-26 23:24:10 +00:00
fallback: do not reset the buffer completely in between of iterations
This commit is contained in:
parent
ba8cf1c402
commit
7eb371f827
1 changed files with 11 additions and 1 deletions
|
|
@ -201,7 +201,16 @@ class Unpacker(object):
|
||||||
self._fb_buf_n += len(next_bytes)
|
self._fb_buf_n += len(next_bytes)
|
||||||
self._fb_buffers.append(next_bytes)
|
self._fb_buffers.append(next_bytes)
|
||||||
|
|
||||||
|
def _fb_sloppy_consume(self):
|
||||||
|
""" Gets rid of some of the used parts of the buffer. """
|
||||||
|
if self._fb_buf_i:
|
||||||
|
for i in xrange(self._fb_buf_i):
|
||||||
|
self._fb_buf_n -= len(self._fb_buffers[i])
|
||||||
|
self._fb_buffers = self._fb_buffers[self._fb_buf_i:]
|
||||||
|
self._fb_buf_i = 0
|
||||||
|
|
||||||
def _fb_consume(self):
|
def _fb_consume(self):
|
||||||
|
""" Gets rid of the used parts of the buffer. """
|
||||||
if self._fb_buf_i:
|
if self._fb_buf_i:
|
||||||
for i in xrange(self._fb_buf_i):
|
for i in xrange(self._fb_buf_i):
|
||||||
self._fb_buf_n -= len(self._fb_buffers[i])
|
self._fb_buf_n -= len(self._fb_buffers[i])
|
||||||
|
|
@ -446,9 +455,10 @@ class Unpacker(object):
|
||||||
def next(self):
|
def next(self):
|
||||||
try:
|
try:
|
||||||
ret = self._fb_unpack(EX_CONSTRUCT, None)
|
ret = self._fb_unpack(EX_CONSTRUCT, None)
|
||||||
self._fb_consume()
|
self._fb_sloppy_consume()
|
||||||
return ret
|
return ret
|
||||||
except OutOfData:
|
except OutOfData:
|
||||||
|
self._fb_consume()
|
||||||
raise StopIteration
|
raise StopIteration
|
||||||
__next__ = next
|
__next__ = next
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue