From 4d98489da32689b3d8cc8eb4a3c1402fa3bb8f20 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Sun, 31 Oct 2010 21:27:04 +0000 Subject: [PATCH] Issue #10265: Close file objects explicitly in sunau. Patch by Brian Brazil. --- Lib/sunau.py | 11 +++++++++++ Misc/NEWS | 2 ++ 2 files changed, 13 insertions(+) diff --git a/Lib/sunau.py b/Lib/sunau.py index 5f50e8fb9c9..6775a53cf73 100644 --- a/Lib/sunau.py +++ b/Lib/sunau.py @@ -154,6 +154,9 @@ class Au_read: if type(f) == type(''): import builtins f = builtins.open(f, 'rb') + self._opened = True + else: + self._opened = False self.initfp(f) def __del__(self): @@ -275,6 +278,8 @@ class Au_read: self._soundpos = pos def close(self): + if self._opened and self._file: + self._file.close() self._file = None class Au_write: @@ -283,11 +288,15 @@ class Au_write: if type(f) == type(''): import builtins f = builtins.open(f, 'wb') + self._opened = True + else: + self._opened = False self.initfp(f) def __del__(self): if self._file: self.close() + self._file = None def initfp(self, file): self._file = file @@ -401,6 +410,8 @@ class Au_write: self._datalength != self._datawritten: self._patchheader() self._file.flush() + if self._opened and self._file: + self._file.close() self._file = None # diff --git a/Misc/NEWS b/Misc/NEWS index abb3ebc3f2a..5097b95a96f 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -59,6 +59,8 @@ Core and Builtins Library ------- +- Issue #10265: Close file objects explicitly in sunau. Patch by Brian Brazil. + - Issue #10266: uu.decode didn't close in_file explicitly when it was given as a filename. Patch by Brian Brazil.