Skip to content

Commit de3280d

Browse files
committed
BUG: fix resource cleanup order in ufunc.at impl
1 parent 36f8d2d commit de3280d

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

numpy/_core/src/umath/ufunc_object.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5941,7 +5941,6 @@ ufunc_at(PyUFuncObject *ufunc, PyObject *args)
59415941
NPY_AUXDATA_FREE(auxdata);
59425942

59435943
Py_XDECREF(op2_array);
5944-
Py_XDECREF(iter);
59455944
Py_XDECREF(iter2);
59465945
for (int i = 0; i < nop; i++) {
59475946
Py_XDECREF(operation_descrs[i]);
@@ -5957,9 +5956,12 @@ ufunc_at(PyUFuncObject *ufunc, PyObject *args)
59575956
if (PyArray_FLAGS(op1_array) & NPY_ARRAY_WRITEBACKIFCOPY) {
59585957
PyArray_DiscardWritebackIfCopy(op1_array);
59595958
}
5959+
// iter might own the array, so it must be decref'd second
5960+
Py_XDECREF(iter);
59605961
return NULL;
59615962
}
59625963
else {
5964+
Py_XDECREF(iter);
59635965
Py_RETURN_NONE;
59645966
}
59655967
}

0 commit comments

Comments
 (0)