changeset: 89534:c3836de644e0 branch: 3.3 parent: 89524:95d8ca61cdbf user: Ned Deily date: Sun Mar 09 14:44:34 2014 -0700 files: Lib/gzip.py Lib/test/test_gzip.py Misc/NEWS description: Issue #20875: Prevent possible gzip "'read' is not defined" NameError. Patch by Claudiu Popa. diff -r 95d8ca61cdbf -r c3836de644e0 Lib/gzip.py --- a/Lib/gzip.py Sun Mar 09 11:17:23 2014 +0100 +++ b/Lib/gzip.py Sun Mar 09 14:44:34 2014 -0700 @@ -99,7 +99,7 @@ self._read -= len(prepend) return else: - self._buffer = self._buffer[read:] + prepend + self._buffer = self._buffer[self._read:] + prepend self._length = len(self._buffer) self._read = 0 diff -r 95d8ca61cdbf -r c3836de644e0 Lib/test/test_gzip.py --- a/Lib/test/test_gzip.py Sun Mar 09 11:17:23 2014 +0100 +++ b/Lib/test/test_gzip.py Sun Mar 09 14:44:34 2014 -0700 @@ -396,6 +396,13 @@ with gzip.GzipFile(fileobj=io.BytesIO(gzdata)) as f: self.assertEqual(f.read(), b'Test') + def test_prepend_error(self): + # See issue #20875 + with gzip.open(self.filename, "wb") as f: + f.write(data1) + with gzip.open(self.filename, "rb") as f: + f.fileobj.prepend() + class TestOpen(BaseTest): def test_binary_modes(self): uncompressed = data1 * 50 diff -r 95d8ca61cdbf -r c3836de644e0 Misc/NEWS --- a/Misc/NEWS Sun Mar 09 11:17:23 2014 +0100 +++ b/Misc/NEWS Sun Mar 09 14:44:34 2014 -0700 @@ -13,6 +13,9 @@ Library ------- +- Issue #20875: Prevent possible gzip "'read' is not defined" NameError. + Patch by Claudiu Popa. + - Issue #20283: RE pattern methods now accept the string keyword parameters as documented. The pattern and source keyword parameters are left as deprecated aliases.