diff options
author | Bas Westerbaan <bas@westerbaan.name> | 2014-06-14 18:42:02 +0200 |
---|---|---|
committer | Bas Westerbaan <bas@westerbaan.name> | 2014-06-14 18:42:02 +0200 |
commit | b334d441c3ed4e8bcd01bb1c2440dc975c377e56 (patch) | |
tree | ac46d01f4e825b9f955779c03ff8d56e9617040b | |
parent | 952eb9fc5331fb7134cc70ce6084b30eff4ccda2 (diff) | |
download | msgpack-python-b334d441c3ed4e8bcd01bb1c2440dc975c377e56.tar.gz |
fallback: _fb_read: do a big read, when we need a big read
-rw-r--r-- | msgpack/fallback.py | 7 |
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]): |