diff options
author | Guido van Rossum <guido@python.org> | 1998-08-03 15:41:39 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1998-08-03 15:41:39 (GMT) |
commit | 84c6fc9653ec5482fc94a8923812591a0cf14e53 (patch) | |
tree | 21cc4f31f7c605e854e515c26b1e4f8e0a58a927 | |
parent | 6fd83b7b38d0b2a8c9ff5e5b553a1ea6f7306ef4 (diff) | |
download | cpython-84c6fc9653ec5482fc94a8923812591a0cf14e53.zip cpython-84c6fc9653ec5482fc94a8923812591a0cf14e53.tar.gz cpython-84c6fc9653ec5482fc94a8923812591a0cf14e53.tar.bz2 |
Patch by Ron Klatchko: fix invariant in _unread(). Also fixed
readlines() to behave like it should (return lines with "\n" appended).
-rw-r--r-- | Lib/gzip.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/Lib/gzip.py b/Lib/gzip.py index fda1121..e25464c 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -174,7 +174,8 @@ class GzipFile: self._read(readsize) readsize = readsize * 2 except EOFError: - pass + if size > self.extrasize: + size = self.extrasize chunk = self.extrabuf[:size] self.extrabuf = self.extrabuf[size:] @@ -184,7 +185,7 @@ class GzipFile: def _unread(self, buf): self.extrabuf = buf + self.extrabuf - self.extrasize = len(self.extrabuf) + self.extrasize = len(buf) + self.extrasize def _read(self, size=1024): try: @@ -257,7 +258,12 @@ class GzipFile: def readlines(self): buf = self.read() - return string.split(buf, '\n') + lines = string.split(buf, '\n') + for i in range(len(lines)-1): + lines[i] = lines[i] + '\n' + if lines and not lines[-1]: + del lines[-1] + return lines def writelines(self, L): for line in L: |