From: Georg Brandl Date: Sun, 28 Dec 2008 11:48:08 +0000 (+0000) Subject: #4759: fix a segfault for bytearray.translate(x, None). X-Git-Tag: v3.0.1~225 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ec61e28d8c7ffcfc95804b8a93a609d229b5360c;p=thirdparty%2FPython%2Fcpython.git #4759: fix a segfault for bytearray.translate(x, None). --- diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index b1427b586edb..b75f62577779 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -888,11 +888,19 @@ class AssortedBytesTest(unittest.TestCase): def test_translate(self): b = b'hello' + ba = bytearray(b) rosetta = bytearray(range(0, 256)) rosetta[ord('o')] = ord('e') c = b.translate(rosetta, b'l') self.assertEqual(b, b'hello') self.assertEqual(c, b'hee') + c = ba.translate(rosetta, b'l') + self.assertEqual(ba, b'hello') + self.assertEqual(c, b'hee') + c = b.translate(None, b'e') + self.assertEqual(c, b'hllo') + self.assertRaises(TypeError, b.translate, b'a'*256, None) + self.assertRaises(TypeError, ba.translate, b'a'*256, None) def test_split_bytearray(self): self.assertEqual(b'a b'.split(memoryview(b' ')), [b'a', b'b']) diff --git a/Misc/NEWS b/Misc/NEWS index 21460a3f5fbf..8c2dff18ad11 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,8 @@ What's New in Python 3.0.1? Core and Builtins ----------------- +- Issue #4759: fix a segfault for bytearray.translate(x, None). + - Added test case to ensure attempts to read from a file opened for writing fail. diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c index 16206522825f..c18a99d375c4 100644 --- a/Objects/bytearrayobject.c +++ b/Objects/bytearrayobject.c @@ -1393,6 +1393,7 @@ bytes_translate(PyByteArrayObject *self, PyObject *args) if (delobj != NULL) { if (_getbuffer(delobj, &vdel) < 0) { result = NULL; + delobj = NULL; /* don't try to release vdel buffer on exit */ goto done; } }