summaryrefslogtreecommitdiff
path: root/Lib/zipfile.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-09-27 22:11:57 +0300
committerSerhiy Storchaka <storchaka@gmail.com>2013-09-27 22:11:57 +0300
commitd2c07a58affecc3fb049652ee7a435c382e3a4d0 (patch)
tree07a07c8b2115e859192c8b0d18eb116e71bcb3ed /Lib/zipfile.py
parent1f09c663add7edc6af0093d1eb3eca02bd0864b9 (diff)
downloadcpython-git-d2c07a58affecc3fb049652ee7a435c382e3a4d0.tar.gz
Issue #19053: ZipExtFile.read1() with non-zero argument no more returns empty
bytes until end of data.
Diffstat (limited to 'Lib/zipfile.py')
-rw-r--r--Lib/zipfile.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index 3448c61795..92c98abe1e 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -785,8 +785,11 @@ class ZipExtFile(io.BufferedIOBase):
buf = self._readbuffer[self._offset:]
self._readbuffer = b''
self._offset = 0
- data = self._read1(self.MAX_N)
- buf += data
+ while not self._eof:
+ data = self._read1(self.MAX_N)
+ if data:
+ buf += data
+ break
return buf
end = n + self._offset
@@ -800,12 +803,16 @@ class ZipExtFile(io.BufferedIOBase):
self._readbuffer = b''
self._offset = 0
if n > 0:
- data = self._read1(n)
- if n < len(data):
- self._readbuffer = data
- self._offset = n
- data = data[:n]
- buf += data
+ while not self._eof:
+ data = self._read1(n)
+ if n < len(data):
+ self._readbuffer = data
+ self._offset = n
+ buf += data[:n]
+ break
+ if data:
+ buf += data
+ break
return buf
def _read1(self, n):