From ec61e28d8c7ffcfc95804b8a93a609d229b5360c Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sun, 28 Dec 2008 11:48:08 +0000 Subject: [PATCH] #4759: fix a segfault for 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 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; } } -- 2.47.3