@@ -2821,8 +2821,10 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
28212821 len = 0 ;
28222822
28232823 a = newarrayobject (type , len , descr );
2824- if (a == NULL )
2824+ if (a == NULL ) {
2825+ Py_XDECREF (it );
28252826 return NULL ;
2827+ }
28262828
28272829 if (len > 0 && !array_Check (initial , state )) {
28282830 Py_ssize_t i ;
@@ -2831,11 +2833,13 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
28312833 PySequence_GetItem (initial , i );
28322834 if (v == NULL ) {
28332835 Py_DECREF (a );
2836+ Py_XDECREF (it );
28342837 return NULL ;
28352838 }
28362839 if (setarrayitem (a , i , v ) != 0 ) {
28372840 Py_DECREF (v );
28382841 Py_DECREF (a );
2842+ Py_XDECREF (it );
28392843 return NULL ;
28402844 }
28412845 Py_DECREF (v );
@@ -2848,6 +2852,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
28482852 initial );
28492853 if (v == NULL ) {
28502854 Py_DECREF (a );
2855+ Py_XDECREF (it );
28512856 return NULL ;
28522857 }
28532858 Py_DECREF (v );
@@ -2858,6 +2863,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
28582863 wchar_t * ustr = PyUnicode_AsWideCharString (initial , & n );
28592864 if (ustr == NULL ) {
28602865 Py_DECREF (a );
2866+ Py_XDECREF (it );
28612867 return NULL ;
28622868 }
28632869
@@ -2878,6 +2884,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
28782884 Py_UCS4 * ustr = PyUnicode_AsUCS4Copy (initial );
28792885 if (ustr == NULL ) {
28802886 Py_DECREF (a );
2887+ Py_XDECREF (it );
28812888 return NULL ;
28822889 }
28832890
@@ -2905,6 +2912,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
29052912 return a ;
29062913 }
29072914 }
2915+ Py_XDECREF (it );
29082916 PyErr_SetString (PyExc_ValueError ,
29092917 "bad typecode (must be b, B, u, w, h, H, i, I, l, L, q, Q, f or d)" );
29102918 return NULL ;
0 commit comments