changeset: 79877:e647229c422b branch: 2.7 parent: 79867:437a12f6dc9c user: Nadeem Vawda date: Sun Oct 21 18:15:05 2012 +0200 files: Lib/gzip.py Lib/test/test_gzip.py Misc/NEWS description: Issue #5148: Ignore 'U' in mode given to gzip.open() and gzip.GzipFile(). diff -r 437a12f6dc9c -r e647229c422b Lib/gzip.py --- a/Lib/gzip.py Sun Oct 21 14:10:29 2012 +0200 +++ b/Lib/gzip.py Sun Oct 21 18:15:05 2012 +0200 @@ -81,6 +81,10 @@ """ + # Make sure we don't inadvertently enable universal newlines on the + # underlying file object - in read mode, this causes data corruption. + if mode: + mode = mode.replace('U', '') # guarantee the file is opened in binary mode on platforms # that care about that sort of thing if mode and 'b' not in mode: diff -r 437a12f6dc9c -r e647229c422b Lib/test/test_gzip.py --- a/Lib/test/test_gzip.py Sun Oct 21 14:10:29 2012 +0200 +++ b/Lib/test/test_gzip.py Sun Oct 21 18:15:05 2012 +0200 @@ -53,6 +53,13 @@ d = f.read() self.assertEqual(d, data1*50) + def test_read_universal_newlines(self): + # Issue #5148: Reading breaks when mode contains 'U'. + self.test_write() + with gzip.GzipFile(self.filename, 'rU') as f: + d = f.read() + self.assertEqual(d, data1*50) + def test_io_on_closed_object(self): # Test that I/O operations on closed GzipFile objects raise a # ValueError, just like the corresponding functions on file objects. diff -r 437a12f6dc9c -r e647229c422b Misc/NEWS --- a/Misc/NEWS Sun Oct 21 14:10:29 2012 +0200 +++ b/Misc/NEWS Sun Oct 21 18:15:05 2012 +0200 @@ -122,6 +122,8 @@ Library ------- +- Issue #5148: Ignore 'U' in mode given to gzip.open() and gzip.GzipFile(). + - Issue #16220: wsgiref now always calls close() on an iterable response. Patch by Brent Tubbs.

AltStyle によって変換されたページ (->オリジナル) /