Kaydet (Commit) 84c6fc96 authored tarafından Guido van Rossum's avatar Guido van Rossum

Patch by Ron Klatchko: fix invariant in _unread(). Also fixed

readlines() to behave like it should (return lines with "\n" appended).
üst 6fd83b7b
...@@ -174,7 +174,8 @@ class GzipFile: ...@@ -174,7 +174,8 @@ class GzipFile:
self._read(readsize) self._read(readsize)
readsize = readsize * 2 readsize = readsize * 2
except EOFError: except EOFError:
pass if size > self.extrasize:
size = self.extrasize
chunk = self.extrabuf[:size] chunk = self.extrabuf[:size]
self.extrabuf = self.extrabuf[size:] self.extrabuf = self.extrabuf[size:]
...@@ -184,7 +185,7 @@ class GzipFile: ...@@ -184,7 +185,7 @@ class GzipFile:
def _unread(self, buf): def _unread(self, buf):
self.extrabuf = buf + self.extrabuf self.extrabuf = buf + self.extrabuf
self.extrasize = len(self.extrabuf) self.extrasize = len(buf) + self.extrasize
def _read(self, size=1024): def _read(self, size=1024):
try: try:
...@@ -257,7 +258,12 @@ class GzipFile: ...@@ -257,7 +258,12 @@ class GzipFile:
def readlines(self): def readlines(self):
buf = self.read() 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): def writelines(self, L):
for line in L: for line in L:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment