Index: Lib/wave.py =================================================================== --- Lib/wave.py (revision 68230) +++ Lib/wave.py (working copy) @@ -146,7 +146,8 @@ if not self._fmt_chunk_read: raise Error, 'data chunk before fmt chunk' self._data_chunk = chunk - self._nframes = chunk.chunksize // self._framesize + self._nframes = (chunk.chunksize // ( + self._framesize * self._sampwidth)) self._data_seek_needed = 0 break chunk.skip() @@ -421,22 +422,19 @@ data = array.array(_array_fmts[self._sampwidth], data) data.byteswap() data.tofile(self._file) - self._datawritten = self._datawritten + len(data) * self._sampwidth else: self._file.write(data) - self._datawritten = self._datawritten + len(data) + self._datawritten = self._datawritten + len(data) * self._sampwidth self._nframeswritten = self._nframeswritten + nframes def writeframes(self, data): self.writeframesraw(data) - if self._datalength != self._datawritten: - self._patchheader() + self._patchheader() def close(self): if self._file: self._ensure_header_written(0) - if self._datalength != self._datawritten: - self._patchheader() + self._patchheader() self._file.flush() self._file = None if self._i_opened_the_file: