#10198: fix duplicate header when writeframes() is called with an empty string.
This commit is contained in:
parent
dd4215483f
commit
cc2adbc693
|
@ -319,6 +319,7 @@ class Wave_write:
|
||||||
self._nframeswritten = 0
|
self._nframeswritten = 0
|
||||||
self._datawritten = 0
|
self._datawritten = 0
|
||||||
self._datalength = 0
|
self._datalength = 0
|
||||||
|
self._headerwritten = False
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
self.close()
|
self.close()
|
||||||
|
@ -449,7 +450,7 @@ class Wave_write:
|
||||||
#
|
#
|
||||||
|
|
||||||
def _ensure_header_written(self, datasize):
|
def _ensure_header_written(self, datasize):
|
||||||
if not self._datawritten:
|
if not self._headerwritten:
|
||||||
if not self._nchannels:
|
if not self._nchannels:
|
||||||
raise Error('# channels not specified')
|
raise Error('# channels not specified')
|
||||||
if not self._sampwidth:
|
if not self._sampwidth:
|
||||||
|
@ -459,6 +460,7 @@ class Wave_write:
|
||||||
self._write_header(datasize)
|
self._write_header(datasize)
|
||||||
|
|
||||||
def _write_header(self, initlength):
|
def _write_header(self, initlength):
|
||||||
|
assert not self._headerwritten
|
||||||
self._file.write(b'RIFF')
|
self._file.write(b'RIFF')
|
||||||
if not self._nframes:
|
if not self._nframes:
|
||||||
self._nframes = initlength // (self._nchannels * self._sampwidth)
|
self._nframes = initlength // (self._nchannels * self._sampwidth)
|
||||||
|
@ -472,8 +474,10 @@ class Wave_write:
|
||||||
self._sampwidth * 8, 'data'))
|
self._sampwidth * 8, 'data'))
|
||||||
self._data_length_pos = self._file.tell()
|
self._data_length_pos = self._file.tell()
|
||||||
self._file.write(struct.pack('<l', self._datalength))
|
self._file.write(struct.pack('<l', self._datalength))
|
||||||
|
self._headerwritten = True
|
||||||
|
|
||||||
def _patchheader(self):
|
def _patchheader(self):
|
||||||
|
assert self._headerwritten
|
||||||
if self._datawritten == self._datalength:
|
if self._datawritten == self._datalength:
|
||||||
return
|
return
|
||||||
curpos = self._file.tell()
|
curpos = self._file.tell()
|
||||||
|
|
|
@ -57,6 +57,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #10198: fix duplicate header written to wave files when writeframes()
|
||||||
|
is called without data.
|
||||||
|
|
||||||
- Close file objects in modulefinder in a timely manner.
|
- Close file objects in modulefinder in a timely manner.
|
||||||
|
|
||||||
- Close a io.TextIOWrapper object in email.parser in a timely manner.
|
- Close a io.TextIOWrapper object in email.parser in a timely manner.
|
||||||
|
|
Loading…
Reference in New Issue