diff -r 627ebd001708 Lib/test/test_array.py --- a/Lib/test/test_array.py Sun Feb 17 16:56:28 2013 +0200 +++ b/Lib/test/test_array.py Mon Feb 18 02:30:20 2013 +0100 @@ -1069,6 +1069,10 @@ self.assertRaises(TypeError, a.fromunicode) + def test_issue17223(self): + # this used to crash + self.assertRaises(ValueError, str, array.array('u', b'asdf')) + class NumberTest(BaseTest): def test_extslice(self): diff -r 627ebd001708 Modules/arraymodule.c --- a/Modules/arraymodule.c Sun Feb 17 16:56:28 2013 +0200 +++ b/Modules/arraymodule.c Mon Feb 18 02:30:20 2013 +0100 @@ -2177,6 +2177,9 @@ } else { v = array_tolist(a, NULL); } + if (v == NULL) { + return NULL; + } s = PyUnicode_FromFormat("array('%c', %R)", (int)typecode, v); Py_DECREF(v);