Commit 5b37f97e authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #19276: Fixed the wave module on 64-bit big-endian platforms.

parents 2bb0ac0a d3b75051
...@@ -80,7 +80,7 @@ class Error(Exception): ...@@ -80,7 +80,7 @@ class Error(Exception):
WAVE_FORMAT_PCM = 0x0001 WAVE_FORMAT_PCM = 0x0001
_array_fmts = None, 'b', 'h', None, 'l' _array_fmts = None, 'b', 'h', None, 'i'
import struct import struct
import sys import sys
...@@ -244,6 +244,7 @@ class Wave_read: ...@@ -244,6 +244,7 @@ class Wave_read:
import array import array
chunk = self._data_chunk chunk = self._data_chunk
data = array.array(_array_fmts[self._sampwidth]) data = array.array(_array_fmts[self._sampwidth])
assert data.itemsize == self._sampwidth
nitems = nframes * self._nchannels nitems = nframes * self._nchannels
if nitems * self._sampwidth > chunk.chunksize - chunk.size_read: if nitems * self._sampwidth > chunk.chunksize - chunk.size_read:
nitems = (chunk.chunksize - chunk.size_read) // self._sampwidth nitems = (chunk.chunksize - chunk.size_read) // self._sampwidth
...@@ -433,6 +434,7 @@ class Wave_write: ...@@ -433,6 +434,7 @@ class Wave_write:
if self._sampwidth > 1 and sys.byteorder == 'big': if self._sampwidth > 1 and sys.byteorder == 'big':
import array import array
data = array.array(_array_fmts[self._sampwidth], data) data = array.array(_array_fmts[self._sampwidth], data)
assert data.itemsize == self._sampwidth
data.byteswap() data.byteswap()
data.tofile(self._file) data.tofile(self._file)
self._datawritten = self._datawritten + len(data) * self._sampwidth self._datawritten = self._datawritten + len(data) * self._sampwidth
......
...@@ -42,6 +42,8 @@ Core and Builtins ...@@ -42,6 +42,8 @@ Core and Builtins
Library Library
------- -------
- Issue #19276: Fixed the wave module on 64-bit big-endian platforms.
- Issue #19266: Rename the new-in-3.4 ``contextlib.ignore`` context manager - Issue #19266: Rename the new-in-3.4 ``contextlib.ignore`` context manager
to ``contextlib.suppress`` in order to be more consistent with existing to ``contextlib.suppress`` in order to be more consistent with existing
descriptions of that operation elsewhere in the language and standard descriptions of that operation elsewhere in the language and standard
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment