@@ -3053,8 +3053,10 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
30533053 len = 0 ;
30543054
30553055 a = newarrayobject (type , len , descr );
3056- if (a == NULL )
3056+ if (a == NULL ) {
3057+ Py_XDECREF (it );
30573058 return NULL ;
3059+ }
30583060
30593061 if (len > 0 && !array_Check (initial , state )) {
30603062 Py_ssize_t i ;
@@ -3063,11 +3065,13 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
30633065 PySequence_GetItem (initial , i );
30643066 if (v == NULL ) {
30653067 Py_DECREF (a );
3068+ Py_XDECREF (it );
30663069 return NULL ;
30673070 }
30683071 if (setarrayitem (a , i , v ) != 0 ) {
30693072 Py_DECREF (v );
30703073 Py_DECREF (a );
3074+ Py_XDECREF (it );
30713075 return NULL ;
30723076 }
30733077 Py_DECREF (v );
@@ -3079,6 +3083,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
30793083 v = array_array_frombytes ((PyObject * )a , initial );
30803084 if (v == NULL ) {
30813085 Py_DECREF (a );
3086+ Py_XDECREF (it );
30823087 return NULL ;
30833088 }
30843089 Py_DECREF (v );
@@ -3089,6 +3094,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
30893094 wchar_t * ustr = PyUnicode_AsWideCharString (initial , & n );
30903095 if (ustr == NULL ) {
30913096 Py_DECREF (a );
3097+ Py_XDECREF (it );
30923098 return NULL ;
30933099 }
30943100
@@ -3109,6 +3115,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
31093115 Py_UCS4 * ustr = PyUnicode_AsUCS4Copy (initial );
31103116 if (ustr == NULL ) {
31113117 Py_DECREF (a );
3118+ Py_XDECREF (it );
31123119 return NULL ;
31133120 }
31143121
@@ -3136,6 +3143,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
31363143 return a ;
31373144 }
31383145 }
3146+ Py_XDECREF (it );
31393147 PyErr_SetString (PyExc_ValueError ,
31403148 "bad typecode (must be b, B, u, w, h, H, i, I, l, L, q, Q, f or d)" );
31413149 return NULL ;
0 commit comments