From b6b8c1a7d299c076df3e1e07774f8d7070c974fd Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Wed, 26 Jun 2019 09:52:32 -0700 Subject: [PATCH 1/3] Add a test for error handling in bytearray.extend. --- Lib/test/test_builtin.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index b536cec064878f..61155799c44a92 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -1592,6 +1592,11 @@ def test_bytearray_translate(self): self.assertRaises(ValueError, x.translate, b"1", 1) self.assertRaises(TypeError, x.translate, b"1"*256, 1) + def test_bytearray_extend_error(self): + array = bytearray() + bad_iter = map(int, "X") + self.assertRaises(ValueError, array.extend, bad_iter) + def test_construct_singletons(self): for const in None, Ellipsis, NotImplemented: tp = type(const) From deb64d60e6cee8ff93545d230a6047dee4009f3b Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Wed, 26 Jun 2019 09:52:54 -0700 Subject: [PATCH 2/3] Fix error handling in bytearray.extend. --- Objects/bytearrayobject.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c index c684db76736462..1bb19a9271b6c3 100644 --- a/Objects/bytearrayobject.c +++ b/Objects/bytearrayobject.c @@ -1698,6 +1698,10 @@ bytearray_extend(PyByteArrayObject *self, PyObject *iterable_of_ints) } Py_DECREF(bytearray_obj); + if (PyErr_Occurred()) { + return NULL; + } + Py_RETURN_NONE; } From 9c366ff91a143a7f846d87fb68eca8c36878820a Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Wed, 26 Jun 2019 18:41:04 +0000 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20blu?= =?UTF-8?q?rb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Core and Builtins/2019-06-26-18-41-00.bpo-37417.VsZeHL.rst | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2019-06-26-18-41-00.bpo-37417.VsZeHL.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2019-06-26-18-41-00.bpo-37417.VsZeHL.rst b/Misc/NEWS.d/next/Core and Builtins/2019-06-26-18-41-00.bpo-37417.VsZeHL.rst new file mode 100644 index 00000000000000..f004631e236103 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2019-06-26-18-41-00.bpo-37417.VsZeHL.rst @@ -0,0 +1,2 @@ +:meth:`bytearray.extend` now correctly handles errors that arise during iteration. +Patch by Brandt Bucher. \ No newline at end of file