summaryrefslogtreecommitdiff
path: root/numpy/core/src
diff options
context:
space:
mode:
authorNathan Goldbaum <nathan.goldbaum@gmail.com>2023-03-16 12:02:14 -0600
committerNathan Goldbaum <nathan.goldbaum@gmail.com>2023-03-17 09:52:37 -0600
commite5f261e32b204ca6a9937e2cbebd065fa15b814d (patch)
tree1efb18a80d25c411bfc73ae4a960e823afec84a4 /numpy/core/src
parenta24e785ead6dbd80050cb157326a6a23b279d4e4 (diff)
downloadnumpy-e5f261e32b204ca6a9937e2cbebd065fa15b814d.tar.gz
BUG: handle errors from PyArray_AdaptDescriptorToArray
Diffstat (limited to 'numpy/core/src')
-rw-r--r--numpy/core/src/multiarray/multiarraymodule.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/numpy/core/src/multiarray/multiarraymodule.c b/numpy/core/src/multiarray/multiarraymodule.c
index e4b8cb8df..a5d8d96a7 100644
--- a/numpy/core/src/multiarray/multiarraymodule.c
+++ b/numpy/core/src/multiarray/multiarraymodule.c
@@ -1656,9 +1656,13 @@ _array_fromobject_generic(
PyArray_Descr* dtype = PyArray_AdaptDescriptorToArray(
oparr, dt_info.dtype, dt_info.descr);
if (dtype == NULL) {
+ return NULL;
+ }
+ if ((dt_info.descr == NULL) && (dt_info.dtype == NULL)) {
if (copy != NPY_COPY_ALWAYS && STRIDING_OK(oparr, order)) {
ret = oparr;
Py_INCREF(ret);
+ Py_DECREF(dtype);
goto finish;
}
else {
@@ -1668,6 +1672,7 @@ _array_fromobject_generic(
return NULL;
}
ret = (PyArrayObject *)PyArray_NewCopy(oparr, order);
+ Py_DECREF(dtype);
goto finish;
}
}