Issue #18919: If the close() method of a writer in the sunau or wave module

failed, second invocation of close() and destructor no more raise an
exception.
This commit is contained in:
Serhiy Storchaka 2013-10-12 21:36:10 +03:00
parent 5c01d99c12
commit e23b2d06c7
3 changed files with 22 additions and 13 deletions

View File

@ -414,14 +414,17 @@ class Au_write:
self._patchheader()
def close(self):
self._ensure_header_written()
if self._nframeswritten != self._nframes or \
self._datalength != self._datawritten:
self._patchheader()
self._file.flush()
if self._opened and self._file:
self._file.close()
self._file = None
if self._file:
try:
self._ensure_header_written()
if self._nframeswritten != self._nframes or \
self._datalength != self._datawritten:
self._patchheader()
self._file.flush()
if self._opened and self._file:
self._file.close()
finally:
self._file = None
#
# private methods

View File

@ -436,11 +436,13 @@ class Wave_write:
def close(self):
if self._file:
self._ensure_header_written(0)
if self._datalength != self._datawritten:
self._patchheader()
self._file.flush()
self._file = None
try:
self._ensure_header_written(0)
if self._datalength != self._datawritten:
self._patchheader()
self._file.flush()
finally:
self._file = None
if self._i_opened_the_file:
self._i_opened_the_file.close()
self._i_opened_the_file = None

View File

@ -76,6 +76,10 @@ Core and Builtins
Library
-------
- Issue #18919: If the close() method of a writer in the sunau or wave module
failed, second invocation of close() and destructor no more raise an
exception.
- Issue #19131: The aifc module now correctly reads and writes sampwidth of
compressed streams.