Mercurial > cpython-lru_cache-weakref
diff Lib/wave.py @ 65756:90bc71d6bedf
#10198: fix duplicate header when writeframes() is called with an empty string.
| author | Georg Brandl <georg@python.org> |
|---|---|
| date | Sat, 30 Oct 2010 08:29:28 +0000 |
| parents | fa8b57f987c5 |
| children | b901da561cd1 |
line wrap: on
line diff
--- a/Lib/wave.py Sat Oct 30 08:10:29 2010 +0000 +++ b/Lib/wave.py Sat Oct 30 08:29:28 2010 +0000 @@ -319,6 +319,7 @@ self._nframeswritten = 0 self._datawritten = 0 self._datalength = 0 + self._headerwritten = False def __del__(self): self.close() @@ -449,7 +450,7 @@ # def _ensure_header_written(self, datasize): - if not self._datawritten: + if not self._headerwritten: if not self._nchannels: raise Error('# channels not specified') if not self._sampwidth: @@ -459,6 +460,7 @@ self._write_header(datasize) def _write_header(self, initlength): + assert not self._headerwritten self._file.write(b'RIFF') if not self._nframes: self._nframes = initlength // (self._nchannels * self._sampwidth) @@ -472,8 +474,10 @@ self._sampwidth * 8, 'data')) self._data_length_pos = self._file.tell() self._file.write(struct.pack('<l', self._datalength)) + self._headerwritten = True def _patchheader(self): + assert self._headerwritten if self._datawritten == self._datalength: return curpos = self._file.tell()
