summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBas Westerbaan <bas@westerbaan.name>2014-06-14 18:42:02 +0200
committerBas Westerbaan <bas@westerbaan.name>2014-06-14 18:42:02 +0200
commitb334d441c3ed4e8bcd01bb1c2440dc975c377e56 (patch)
treeac46d01f4e825b9f955779c03ff8d56e9617040b
parent952eb9fc5331fb7134cc70ce6084b30eff4ccda2 (diff)
downloadmsgpack-python-b334d441c3ed4e8bcd01bb1c2440dc975c377e56.tar.gz
fallback: _fb_read: do a big read, when we need a big read
-rw-r--r--msgpack/fallback.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/msgpack/fallback.py b/msgpack/fallback.py
index fbd87ba..c422fb5 100644
--- a/msgpack/fallback.py
+++ b/msgpack/fallback.py
@@ -263,16 +263,19 @@ class Unpacker(object):
# The remaining cases.
ret = b''
while len(ret) != n:
+ sliced = n - len(ret)
if self._fb_buf_i == len(buffs):
if self._fb_feeding:
break
- tmp = self.file_like.read(self._read_size)
+ to_read = sliced
+ if self._read_size > to_read:
+ to_read = self._read_size
+ tmp = self.file_like.read(to_read)
if not tmp:
break
buffs.append(tmp)
self._fb_buf_n += len(tmp)
continue
- sliced = n - len(ret)
ret += buffs[self._fb_buf_i][self._fb_buf_o:self._fb_buf_o + sliced]
self._fb_buf_o += sliced
if self._fb_buf_o >= len(buffs[self._fb_buf_i]):