summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorR. David Murray <rdmurray@bitdance.com>2009-05-07 16:45:44 (GMT)
committerR. David Murray <rdmurray@bitdance.com>2009-05-07 16:45:44 (GMT)
commitd0a45396326fa8fece0f7d5414b88afb5a4704f9 (patch)
treecfb2ff7cbd73b822dd05f1c848d9bd694cd39586 /Lib
parent0dfd954292585cef3cc3323b3d9aac14387875e8 (diff)
downloadcpython-d0a45396326fa8fece0f7d5414b88afb5a4704f9.zip
cpython-d0a45396326fa8fece0f7d5414b88afb5a4704f9.tar.gz
cpython-d0a45396326fa8fece0f7d5414b88afb5a4704f9.tar.bz2
Merged revisions 72422,72425-72426 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r72422 | benjamin.peterson | 2009-05-07 07:45:38 -0400 (Thu, 07 May 2009) | 1 line actually close files instead of leaving it to the gc #5955 ........ r72425 | r.david.murray | 2009-05-07 12:27:02 -0400 (Thu, 07 May 2009) | 3 lines Issue5955: aifc's close method did not close the file it wrapped, now it does. This also means getfp method now returns the real fp. ........ r72426 | r.david.murray | 2009-05-07 12:29:19 -0400 (Thu, 07 May 2009) | 3 lines News item for Issue5955. ........
Diffstat (limited to 'Lib')
-rw-r--r--Lib/aifc.py12
-rw-r--r--Lib/test/test_aifc.py15
2 files changed, 21 insertions, 6 deletions
diff --git a/Lib/aifc.py b/Lib/aifc.py
index 8e4f864..e0b76d6 100644
--- a/Lib/aifc.py
+++ b/Lib/aifc.py
@@ -282,10 +282,11 @@ class Aifc_read:
self._convert = None
self._markers = []
self._soundpos = 0
- self._file = Chunk(file)
- if self._file.getname() != 'FORM':
+ self._file = file
+ chunk = Chunk(file)
+ if chunk.getname() != 'FORM':
raise Error, 'file does not start with FORM id'
- formdata = self._file.read(4)
+ formdata = chunk.read(4)
if formdata == 'AIFF':
self._aifc = 0
elif formdata == 'AIFC':
@@ -347,7 +348,7 @@ class Aifc_read:
if self._decomp:
self._decomp.CloseDecompressor()
self._decomp = None
- self._file = None
+ self._file.close()
def tell(self):
return self._soundpos
@@ -732,8 +733,7 @@ class Aifc_write:
if self._comp:
self._comp.CloseCompressor()
self._comp = None
- self._file.flush()
- self._file = None
+ self._file.close()
#
# Internal methods.
diff --git a/Lib/test/test_aifc.py b/Lib/test/test_aifc.py
index 7e5b2e9..2f4350d 100644
--- a/Lib/test/test_aifc.py
+++ b/Lib/test/test_aifc.py
@@ -45,6 +45,21 @@ class AIFCTest(unittest.TestCase):
#XXX Need more tests!
+ def test_close(self):
+ class Wrapfile(object):
+ def __init__(self, file):
+ self.file = open(file)
+ self.closed = False
+ def close(self):
+ self.file.close()
+ self.closed = True
+ def __getattr__(self, attr): return getattr(self.file, attr)
+ testfile = Wrapfile(self.sndfilepath)
+ f = self.f = aifc.open(testfile)
+ self.assertEqual(testfile.closed, False)
+ f.close()
+ self.assertEqual(testfile.closed, True)
+
def test_main():
run_unittest(AIFCTest)