cpython: 97ad9af5d5e7 (original) (raw)

--- a/Lib/test/test_audioop.py +++ b/Lib/test/test_audioop.py @@ -121,6 +121,9 @@ class TestAudioop(unittest.TestCase): b'\x00\x24\x7f\x80\x7f\x80\xfe') self.assertEqual(audioop.add(datas[2], datas[2], 2), packs[2](0, 0x2468, 0x7fff, -0x8000, 0x7fff, -0x8000, -2))

@@ -145,6 +148,17 @@ class TestAudioop(unittest.TestCase): packs[2](-1, 0x1233, 0x4566, -0x4568, 0x7ffe, 0x7fff, -2)) self.assertEqual(audioop.bias(datas[2], 2, -0x80000000), datas[2])

@@ -164,24 +178,43 @@ class TestAudioop(unittest.TestCase): self.assertEqual(audioop.lin2lin(datas[1], 1, 2), packs[2](0, 0x1200, 0x4500, -0x4500, 0x7f00, -0x8000, -0x100))

def test_adpcm2lin(self): self.assertEqual(audioop.adpcm2lin(b'\x07\x7f\x7f', 1, None), (b'\x00\x00\x00\xff\x00\xff', (-179, 40))) self.assertEqual(audioop.adpcm2lin(b'\x07\x7f\x7f', 2, None), (packs[2](0, 0xb, 0x29, -0x16, 0x72, -0xb3), (-179, 40)))

@@ -260,6 +293,9 @@ class TestAudioop(unittest.TestCase): b'\x00\x24\x7f\x80\x7f\x80\xfe') self.assertEqual(audioop.mul(datas[2], 2, 2), packs[2](0, 0x2468, 0x7fff, -0x8000, 0x7fff, -0x8000, -2))

--- a/Modules/audioop.c +++ b/Modules/audioop.c @@ -985,10 +985,12 @@ audioop_bias(PyObject *self, PyObject *a val = GETINTX(unsigned char, cp, i); else if (size == 2) val = GETINTX(unsigned short, cp, i);

val += (unsigned int)bias; /* wrap around in case of overflow */ @@ -998,10 +1000,12 @@ audioop_bias(PyObject *self, PyObject *a SETINTX(unsigned char, ncp, i, val); else if (size == 2) SETINTX(unsigned short, ncp, i, val);