From ef29f8634ca5415fda7aa75c9c142d3eaf2edebc Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sun, 28 Dec 2008 11:55:24 +0000 Subject: [PATCH] Backport r67975: #4759: fix segfault in bytearray.translate(x, None). --- Lib/test/test_bytes.py | 8 ++++++++ Misc/NEWS | 2 ++ Objects/bytearrayobject.c | 1 + 3 files changed, 11 insertions(+) diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index 36defb8a84..00aee028b1 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -872,11 +872,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 b75ddf9034..3bea977e70 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,8 @@ What's New in Python 2.6.2 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 d75eb53e43..56071a0cce 100644 --- a/Objects/bytearrayobject.c +++ b/Objects/bytearrayobject.c @@ -1465,6 +1465,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; } } -- 2.49.0