Index: Objects/bytearrayobject.c =================================================================== --- Objects/bytearrayobject.c (révision 74152) +++ Objects/bytearrayobject.c (copie de travail) @@ -1465,7 +1465,8 @@ if (vtable.len != 256) { PyErr_SetString(PyExc_ValueError, "translation table must be 256 characters long"); - goto done; + PyBuffer_Release(&vtable); + return NULL; } table = (const char*)vtable.buf; } @@ -1473,7 +1474,9 @@ if (delobj != NULL) { if (_getbuffer(delobj, &vdel) < 0) { delobj = NULL; /* don't try to release vdel buffer on exit */ - goto done; + if (tableobj != NULL) + PyBuffer_Release(&vtable); + return NULL; } } else { Index: Lib/test/test_builtin.py =================================================================== --- Lib/test/test_builtin.py (révision 74152) +++ Lib/test/test_builtin.py (copie de travail) @@ -1472,6 +1472,11 @@ self.assertEqual(bin(-(2**65)), '-0b1' + '0' * 65) self.assertEqual(bin(-(2**65-1)), '-0b' + '1' * 65) + def test_bytearray_translate(self): + x = bytearray("abc") + self.assertRaises(TypeError, x.translate, "1", 1) + self.assertRaises(TypeError, x.translate, "1"*256, 1) + class TestSorted(unittest.TestCase): def test_basic(self):