summaryrefslogtreecommitdiff
path: root/msgpack/fallback.py
diff options
context:
space:
mode:
authorINADA Naoki <methane@users.noreply.github.com>2018-02-23 11:52:48 +0900
committerGitHub <noreply@github.com>2018-02-23 11:52:48 +0900
commitf38c1a3674b7623080cb774b56ede21383bde04a (patch)
tree62c7e154d85cd49f0e5b38652cfa4b3d4c087388 /msgpack/fallback.py
parentfbaa1360be67672f855dd6337e4137f2edf7ade6 (diff)
downloadmsgpack-python-f38c1a3674b7623080cb774b56ede21383bde04a.tar.gz
Fix Unpacker.feed() drops unused data in buffer. (#289)
Fixes #287
Diffstat (limited to 'msgpack/fallback.py')
-rw-r--r--msgpack/fallback.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/msgpack/fallback.py b/msgpack/fallback.py
index 7e40686..e9108d2 100644
--- a/msgpack/fallback.py
+++ b/msgpack/fallback.py
@@ -289,8 +289,13 @@ class Unpacker(object):
view = _get_data_from_buffer(next_bytes)
if (len(self._buffer) - self._buff_i + len(view) > self._max_buffer_size):
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
def _consume(self):