bpo-37417: Fix error handling in bytearray.extend. (GH-14407)

This commit is contained in:
Brandt Bucher 2019-06-26 12:06:18 -07:00 committed by Serhiy Storchaka
parent 5150d32792
commit 2a7d596f27
3 changed files with 11 additions and 0 deletions

View File

@ -1592,6 +1592,11 @@ class BuiltinTest(unittest.TestCase):
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)

View File

@ -0,0 +1,2 @@
:meth:`bytearray.extend` now correctly handles errors that arise during iteration.
Patch by Brandt Bucher.

View File

@ -1698,6 +1698,10 @@ bytearray_extend(PyByteArrayObject *self, PyObject *iterable_of_ints)
}
Py_DECREF(bytearray_obj);
if (PyErr_Occurred()) {
return NULL;
}
Py_RETURN_NONE;
}