@@ -319,6 +319,7 @@ def initfp(self, file):
319319 self ._nframeswritten = 0
320320 self ._datawritten = 0
321321 self ._datalength = 0
322+ self ._headerwritten = False
322323
323324 def __del__ (self ):
324325 self .close ()
@@ -449,7 +450,7 @@ def close(self):
449450 #
450451
451452 def _ensure_header_written (self , datasize ):
452- if not self ._datawritten :
453+ if not self ._headerwritten :
453454 if not self ._nchannels :
454455 raise Error ('# channels not specified' )
455456 if not self ._sampwidth :
@@ -459,6 +460,7 @@ def _ensure_header_written(self, datasize):
459460 self ._write_header (datasize )
460461
461462 def _write_header (self , initlength ):
463+ assert not self ._headerwritten
462464 self ._file .write (b'RIFF' )
463465 if not self ._nframes :
464466 self ._nframes = initlength // (self ._nchannels * self ._sampwidth )
@@ -472,8 +474,10 @@ def _write_header(self, initlength):
472474 self ._sampwidth * 8 , 'data' ))
473475 self ._data_length_pos = self ._file .tell ()
474476 self ._file .write (struct .pack ('<l' , self ._datalength ))
477+ self ._headerwritten = True
475478
476479 def _patchheader (self ):
480+ assert self ._headerwritten
477481 if self ._datawritten == self ._datalength :
478482 return
479483 curpos = self ._file .tell ()
0 commit comments