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()