diff options
author | INADA Naoki <methane@users.noreply.github.com> | 2015-01-27 14:03:30 +0900 |
---|---|---|
committer | INADA Naoki <methane@users.noreply.github.com> | 2015-01-27 14:03:30 +0900 |
commit | 3f5e0582648b04c2b3e6663ed946462b3d7df02e (patch) | |
tree | c0f3accad86450b0d2e2c2844d9d31f3081dae92 /msgpack/fallback.py | |
parent | 68b029446569bdaf77518ceda99da822b0b26f21 (diff) | |
parent | c5d621853d305418feb3ef2616a05f5eb12440bb (diff) | |
download | msgpack-python-3f5e0582648b04c2b3e6663ed946462b3d7df02e.tar.gz |
Merge pull request #125 from bwesterb/master
Rollback to correct position in the case of OutOfData.
Fixes #124
Diffstat (limited to 'msgpack/fallback.py')
-rw-r--r-- | msgpack/fallback.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/msgpack/fallback.py b/msgpack/fallback.py index d1f39d1..bd99a15 100644 --- a/msgpack/fallback.py +++ b/msgpack/fallback.py @@ -195,6 +195,9 @@ class Unpacker(object): # the buffer is not "consumed" completely, for efficiency sake. # Instead, it is done sloppily. To make sure we raise BufferFull at # the correct moments, we have to keep track of how sloppy we were. + # Furthermore, when the buffer is incomplete (that is: in the case + # we raise an OutOfData) we need to rollback the buffer to the correct + # state, which _fb_slopiness records. self._fb_sloppiness = 0 self._max_buffer_size = max_buffer_size or 2**31-1 if read_size > self._max_buffer_size: @@ -283,7 +286,7 @@ class Unpacker(object): def _fb_rollback(self): self._fb_buf_i = 0 - self._fb_buf_o = 0 + self._fb_buf_o = self._fb_sloppiness def _fb_get_extradata(self): bufs = self._fb_buffers[self._fb_buf_i:] |