Fix Unpacker.feed() drops unused data in buffer. (#289)

Fixes #287
This commit is contained in:
INADA Naoki 2018-02-23 11:52:48 +09:00 committed by GitHub
parent fbaa1360be
commit f38c1a3674
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -289,8 +289,13 @@ class Unpacker(object):
view = _get_data_from_buffer(next_bytes) view = _get_data_from_buffer(next_bytes)
if (len(self._buffer) - self._buff_i + len(view) > self._max_buffer_size): if (len(self._buffer) - self._buff_i + len(view) > self._max_buffer_size):
raise BufferFull raise BufferFull
del self._buffer[:self._buff_i]
self._buff_i = 0 # Strip buffer before checkpoint before reading file.
if self._buf_checkpoint > 0:
del self._buffer[:self._buf_checkpoint]
self._buff_i -= self._buf_checkpoint
self._buf_checkpoint = 0
self._buffer += view self._buffer += view
def _consume(self): def _consume(self):