Commit e08e3d06 authored by Georg Brandl's avatar Georg Brandl

#2959: allow multiple close() calls for GzipFile.

parent ecd0ad3c
......@@ -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)
......
......@@ -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.
......
......@@ -59,6 +59,10 @@ Extension Modules
Library
-------
- Issue #2959: For consistency with other file-like objects, gzip's
GzipFile.close() can now be called multiple times without raising
an exception.
- Issue #1390: Raise ValueError in toxml when an invalid comment would
otherwise be produced.
......
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