summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNed Deily <nad@acm.org>2014-03-09 21:47:58 (GMT)
committerNed Deily <nad@acm.org>2014-03-09 21:47:58 (GMT)
commite5127299c86666080c50e8b7c76e70c3b968ada2 (patch)
tree86e9e67d731785042b48f4bff6e3feabf2a12e67
parentb8bf9951ad294398a7fb95d2fbbf79182c6a0920 (diff)
parent6120739f0cb1c26069570fea701fe79489f1cd9d (diff)
downloadcpython-e5127299c86666080c50e8b7c76e70c3b968ada2.zip
cpython-e5127299c86666080c50e8b7c76e70c3b968ada2.tar.gz
cpython-e5127299c86666080c50e8b7c76e70c3b968ada2.tar.bz2
Issue #20875: Merge from 3.3
-rw-r--r--Lib/gzip.py2
-rw-r--r--Lib/test/test_gzip.py7
-rw-r--r--Misc/NEWS3
3 files changed, 11 insertions, 1 deletions
diff --git a/Lib/gzip.py b/Lib/gzip.py
index 8d21fe4..f934d4f 100644
--- a/Lib/gzip.py
+++ b/Lib/gzip.py
@@ -96,7 +96,7 @@ class _PaddedFile:
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 --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py
index 5289407..b7a7e03 100644
--- a/Lib/test/test_gzip.py
+++ b/Lib/test/test_gzip.py
@@ -421,6 +421,13 @@ class TestGzip(BaseTest):
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 --git a/Misc/NEWS b/Misc/NEWS
index 4f7328c..68cb379 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -20,6 +20,9 @@ Core and Builtins
Library
-------
+- Issue #20875: Prevent possible gzip "'read' is not defined" NameError.
+ Patch by Claudiu Popa.
+
- Issue #11558: ``email.message.Message.attach`` now returns a more
useful error message if ``attach`` is called on a message for which
``is_multipart`` is False.