]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Patch #1681153: the wave module now closes a file object it opened if
authorGeorg Brandl <georg@python.org>
Thu, 15 Mar 2007 07:41:30 +0000 (07:41 +0000)
committerGeorg Brandl <georg@python.org>
Thu, 15 Mar 2007 07:41:30 +0000 (07:41 +0000)
initialization failed.

Lib/wave.py
Misc/NEWS

index 08c51ba90c163cb1237ae51b9babca2f539337ff..b993b400c2ca5d6e0221d754b1d2d3c110458672 100644 (file)
@@ -159,7 +159,12 @@ class Wave_read:
             f = __builtin__.open(f, 'rb')
             self._i_opened_the_file = f
         # else, assume it is an open file object already
-        self.initfp(f)
+        try:
+            self.initfp(f)
+        except:
+            if self._i_opened_the_file:
+                f.close()
+            raise
 
     def __del__(self):
         self.close()
@@ -297,7 +302,12 @@ class Wave_write:
         if isinstance(f, basestring):
             f = __builtin__.open(f, 'wb')
             self._i_opened_the_file = f
-        self.initfp(f)
+        try:
+            self.initfp(f)
+        except:
+            if self._i_opened_the_file:
+                f.close()
+            raise
 
     def initfp(self, file):
         self._file = file
index ec9ef6ee03e724d5b0d1e5415ea167a3e0c5020f..f69d1b57ca4243eb5e4295c106b0c6dd02913722 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -173,6 +173,9 @@ Core and builtins
 Library
 -------
 
+- Patch #1681153: the wave module now closes a file object it opened if
+  initialization failed.
+
 - Bug #767111: fix long-standing bug in urllib which caused an
   AttributeError instead of an IOError when the server's response didn't
   contain a valid HTTP status line.