diff options
author | Georg Brandl <georg@python.org> | 2008-05-25 08:07:37 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2008-05-25 08:07:37 (GMT) |
commit | e08e3d06864c5ad993f74613d9ed4ce69cc6cbc6 (patch) | |
tree | 7f8d08a1089aba9d116273c83e4545347967a60a /Lib | |
parent | ecd0ad3c573fd606c05fd550c5393a077b1a9c33 (diff) | |
download | cpython-e08e3d06864c5ad993f74613d9ed4ce69cc6cbc6.zip cpython-e08e3d06864c5ad993f74613d9ed4ce69cc6cbc6.tar.gz cpython-e08e3d06864c5ad993f74613d9ed4ce69cc6cbc6.tar.bz2 |
#2959: allow multiple close() calls for GzipFile.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/gzip.py | 2 | ||||
-rw-r--r-- | Lib/test/test_gzip.py | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/Lib/gzip.py b/Lib/gzip.py index eeef3f8..7a3f813 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -306,6 +306,8 @@ class GzipFile: raise IOError, "Incorrect length of data produced" def close(self): + if self.fileobj is None: + return if self.mode == WRITE: self.fileobj.write(self.compress.flush()) write32u(self.fileobj, self.crc) diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py index a1a267e..105882a 100644 --- a/Lib/test/test_gzip.py +++ b/Lib/test/test_gzip.py @@ -24,14 +24,14 @@ data2 = """/* zlibmodule.c -- gzip-compatible data compression */ class TestGzip(unittest.TestCase): filename = test_support.TESTFN - def setUp (self): + def setUp(self): test_support.unlink(self.filename) - def tearDown (self): + def tearDown(self): test_support.unlink(self.filename) - def test_write (self): + def test_write(self): f = gzip.GzipFile(self.filename, 'wb') ; f.write(data1 * 50) # Try flush and fileno. @@ -41,6 +41,9 @@ class TestGzip(unittest.TestCase): os.fsync(f.fileno()) f.close() + # Test multiple close() calls. + f.close() + def test_read(self): self.test_write() # Try reading. |