Skip to content

Commit 42b58e3

Browse files
committed
Add an n_cleanup as requested in review
1 parent c5e3766 commit 42b58e3

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

numpy/_core/src/umath/ufunc_object.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4034,6 +4034,7 @@ resolve_descriptors(int nop,
40344034
{
40354035
int retval = -1;
40364036
NPY_CASTING safety;
4037+
int n_cleanup = 0; /* number of original_descrs filled (to XDECREF) */
40374038
PyArray_Descr *original_descrs[NPY_MAXARGS];
40384039

40394040
NPY_UF_DBG_PRINT("Resolving the descriptors\n");
@@ -4070,6 +4071,7 @@ resolve_descriptors(int nop,
40704071
input_scalars[i] = NULL;
40714072
}
40724073
}
4074+
n_cleanup = nop;
40734075

40744076
npy_intp view_offset = NPY_MIN_INTP; /* currently ignored */
40754077
safety = ufuncimpl->resolve_descriptors_with_scalars(
@@ -4115,14 +4117,12 @@ resolve_descriptors(int nop,
41154117
PyArray_Descr *new_descr = npy_find_descr_for_scalar(
41164118
input, descr, original_DTypes[i], signature[i]);
41174119
if (new_descr == NULL) {
4118-
nop = i; /* only this much is initialized */
41194120
goto finish;
41204121
}
41214122
int res = npy_update_operand_for_scalar(
41224123
&operands[i], input, new_descr, casting);
41234124
Py_DECREF(new_descr);
41244125
if (res < 0) {
4125-
nop = i; /* only this much is initialized */
41264126
goto finish;
41274127
}
41284128

@@ -4136,9 +4136,9 @@ resolve_descriptors(int nop,
41364136
*/
41374137
original_descrs[i] = PyArray_CastDescrToDType(descr, signature[i]);
41384138
if (original_descrs[i] == NULL) {
4139-
nop = i; /* only this much is initialized */
41404139
goto finish;
41414140
}
4141+
n_cleanup += 1;
41424142
}
41434143

41444144
if (ufuncimpl->resolve_descriptors != &wrapped_legacy_resolve_descriptors) {
@@ -4173,7 +4173,7 @@ resolve_descriptors(int nop,
41734173
retval = 0;
41744174

41754175
finish:
4176-
for (int i = 0; i < nop; i++) {
4176+
for (int i = 0; i < n_cleanup; i++) {
41774177
Py_XDECREF(original_descrs[i]);
41784178
}
41794179
return retval;

0 commit comments

Comments
 (0)