Commit 4d98489d authored by Antoine Pitrou's avatar Antoine Pitrou

Issue #10265: Close file objects explicitly in sunau. Patch by Brian Brazil.

parent b373799e
...@@ -154,6 +154,9 @@ class Au_read: ...@@ -154,6 +154,9 @@ class Au_read:
if type(f) == type(''): if type(f) == type(''):
import builtins import builtins
f = builtins.open(f, 'rb') f = builtins.open(f, 'rb')
self._opened = True
else:
self._opened = False
self.initfp(f) self.initfp(f)
def __del__(self): def __del__(self):
...@@ -275,6 +278,8 @@ class Au_read: ...@@ -275,6 +278,8 @@ class Au_read:
self._soundpos = pos self._soundpos = pos
def close(self): def close(self):
if self._opened and self._file:
self._file.close()
self._file = None self._file = None
class Au_write: class Au_write:
...@@ -283,11 +288,15 @@ class Au_write: ...@@ -283,11 +288,15 @@ class Au_write:
if type(f) == type(''): if type(f) == type(''):
import builtins import builtins
f = builtins.open(f, 'wb') f = builtins.open(f, 'wb')
self._opened = True
else:
self._opened = False
self.initfp(f) self.initfp(f)
def __del__(self): def __del__(self):
if self._file: if self._file:
self.close() self.close()
self._file = None
def initfp(self, file): def initfp(self, file):
self._file = file self._file = file
...@@ -401,6 +410,8 @@ class Au_write: ...@@ -401,6 +410,8 @@ class Au_write:
self._datalength != self._datawritten: self._datalength != self._datawritten:
self._patchheader() self._patchheader()
self._file.flush() self._file.flush()
if self._opened and self._file:
self._file.close()
self._file = None self._file = None
# #
......
...@@ -59,6 +59,8 @@ Core and Builtins ...@@ -59,6 +59,8 @@ Core and Builtins
Library 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 - Issue #10266: uu.decode didn't close in_file explicitly when it was given
as a filename. Patch by Brian Brazil. as a filename. Patch by Brian Brazil.
......
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