summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAayush Agrawal <aayushagrawal135@gmail.com>2022-11-08 11:53:57 -0500
committerCharles Harris <charlesr.harris@gmail.com>2022-11-15 10:59:00 -0700
commitdcd4847b8d855ff3568ebf86792bd10e4873d803 (patch)
treef6dbec12e50837a57fda489400bd8b0c55415b6c
parente5c39c8a89c4a7165136773e06d0042240be49fa (diff)
downloadnumpy-dcd4847b8d855ff3568ebf86792bd10e4873d803.tar.gz
BUG: Decrement ref count in gentype_reduce when allocated memory not used
-rw-r--r--numpy/core/src/multiarray/scalartypes.c.src5
1 files changed, 5 insertions, 0 deletions
diff --git a/numpy/core/src/multiarray/scalartypes.c.src b/numpy/core/src/multiarray/scalartypes.c.src
index e1f236001..9764fb2a1 100644
--- a/numpy/core/src/multiarray/scalartypes.c.src
+++ b/numpy/core/src/multiarray/scalartypes.c.src
@@ -1753,11 +1753,13 @@ gentype_reduce(PyObject *self, PyObject *NPY_UNUSED(args))
mod = PyImport_ImportModule("numpy.core._multiarray_umath");
if (mod == NULL) {
+ Py_DECREF(ret);
return NULL;
}
obj = PyObject_GetAttrString(mod, "scalar");
Py_DECREF(mod);
if (obj == NULL) {
+ Py_DECREF(ret);
return NULL;
}
PyTuple_SET_ITEM(ret, 0, obj);
@@ -1766,6 +1768,7 @@ gentype_reduce(PyObject *self, PyObject *NPY_UNUSED(args))
PyObject *val = PyArrayScalar_VAL(self, Object);
PyObject *tup = Py_BuildValue("NO", obj, val);
if (tup == NULL) {
+ Py_DECREF(ret);
return NULL;
}
PyTuple_SET_ITEM(ret, 1, tup);
@@ -1774,11 +1777,13 @@ gentype_reduce(PyObject *self, PyObject *NPY_UNUSED(args))
/* a structured dtype with an object in a field */
PyArrayObject *arr = (PyArrayObject *)PyArray_FromScalar(self, NULL);
if (arr == NULL) {
+ Py_DECREF(ret);
return NULL;
}
/* Use the whole array which handles sturctured void correctly */
PyObject *tup = Py_BuildValue("NN", obj, arr);
if (tup == NULL) {
+ Py_DECREF(ret);
return NULL;
}
PyTuple_SET_ITEM(ret, 1, tup);