From: Guido van Rossum Date: Mon, 3 Aug 1998 15:41:39 +0000 (+0000) Subject: Patch by Ron Klatchko: fix invariant in _unread(). Also fixed X-Git-Tag: v1.5.2a1~169 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=84c6fc9653ec5482fc94a8923812591a0cf14e53;p=python Patch by Ron Klatchko: fix invariant in _unread(). Also fixed readlines() to behave like it should (return lines with "\n" appended). --- diff --git a/Lib/gzip.py b/Lib/gzip.py index fda112180a..e25464caf9 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: