@@ -2854,8 +2854,10 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
28542854 len = 0 ;
28552855
28562856 a = newarrayobject (type , len , descr );
2857- if (a == NULL )
2857+ if (a == NULL ) {
2858+ Py_XDECREF (it );
28582859 return NULL ;
2860+ }
28592861
28602862 if (len > 0 && !array_Check (initial , state )) {
28612863 Py_ssize_t i ;
@@ -2864,11 +2866,13 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
28642866 PySequence_GetItem (initial , i );
28652867 if (v == NULL ) {
28662868 Py_DECREF (a );
2869+ Py_XDECREF (it );
28672870 return NULL ;
28682871 }
28692872 if (setarrayitem (a , i , v ) != 0 ) {
28702873 Py_DECREF (v );
28712874 Py_DECREF (a );
2875+ Py_XDECREF (it );
28722876 return NULL ;
28732877 }
28742878 Py_DECREF (v );
@@ -2880,6 +2884,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
28802884 v = array_array_frombytes ((PyObject * )a , initial );
28812885 if (v == NULL ) {
28822886 Py_DECREF (a );
2887+ Py_XDECREF (it );
28832888 return NULL ;
28842889 }
28852890 Py_DECREF (v );
@@ -2890,6 +2895,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
28902895 wchar_t * ustr = PyUnicode_AsWideCharString (initial , & n );
28912896 if (ustr == NULL ) {
28922897 Py_DECREF (a );
2898+ Py_XDECREF (it );
28932899 return NULL ;
28942900 }
28952901
@@ -2910,6 +2916,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
29102916 Py_UCS4 * ustr = PyUnicode_AsUCS4Copy (initial );
29112917 if (ustr == NULL ) {
29122918 Py_DECREF (a );
2919+ Py_XDECREF (it );
29132920 return NULL ;
29142921 }
29152922
@@ -2937,6 +2944,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
29372944 return a ;
29382945 }
29392946 }
2947+ Py_XDECREF (it );
29402948 PyErr_SetString (PyExc_ValueError ,
29412949 "bad typecode (must be b, B, u, w, h, H, i, I, l, L, q, Q, f or d)" );
29422950 return NULL ;
0 commit comments