summaryrefslogtreecommitdiff
path: root/numpy/core
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/core')
-rw-r--r--numpy/core/src/multiarray/ctors.c6
-rw-r--r--numpy/core/src/multiarray/scalartypes.c.src7
2 files changed, 8 insertions, 5 deletions
diff --git a/numpy/core/src/multiarray/ctors.c b/numpy/core/src/multiarray/ctors.c
index fc3942e91..4f0bc7337 100644
--- a/numpy/core/src/multiarray/ctors.c
+++ b/numpy/core/src/multiarray/ctors.c
@@ -1766,7 +1766,8 @@ PyArray_FromAny(PyObject *op, PyArray_Descr *newtype, int min_depth,
}
if (cache == NULL && newtype != NULL &&
- PyDataType_ISSIGNED(newtype) && PyArray_IsScalar(op, Generic)) {
+ PyDataType_ISSIGNED(dtype) &&
+ PyArray_IsScalar(op, Generic)) {
assert(ndim == 0);
/*
* This is an (possible) inconsistency where:
@@ -3242,7 +3243,7 @@ _calc_length(PyObject *start, PyObject *stop, PyObject *step, PyObject **next, i
NPY_NO_EXPORT PyObject *
PyArray_ArangeObj(PyObject *start, PyObject *stop, PyObject *step, PyArray_Descr *dtype)
{
- PyArrayObject *range;
+ PyArrayObject *range = NULL;
PyArray_ArrFuncs *funcs;
PyObject *next = NULL;
PyArray_Descr *native = NULL;
@@ -3402,6 +3403,7 @@ PyArray_ArangeObj(PyObject *start, PyObject *stop, PyObject *step, PyArray_Descr
Py_XDECREF(stop);
Py_XDECREF(step);
Py_XDECREF(next);
+ Py_XDECREF(range);
return NULL;
}
diff --git a/numpy/core/src/multiarray/scalartypes.c.src b/numpy/core/src/multiarray/scalartypes.c.src
index 18e793775..bb5d36ba1 100644
--- a/numpy/core/src/multiarray/scalartypes.c.src
+++ b/numpy/core/src/multiarray/scalartypes.c.src
@@ -3239,6 +3239,9 @@ void_arrtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
if (descr == NULL) {
/* Use the "size-less" void dtype to discover the size. */
descr = PyArray_DescrNewFromType(NPY_VOID);
+ if (descr == NULL) {
+ return NULL;
+ }
}
else if (descr->type_num != NPY_VOID || PyDataType_HASSUBARRAY(descr)) {
/* we reject subarrays, since subarray scalars do not exist. */
@@ -3246,11 +3249,9 @@ void_arrtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
"void: descr must be a `void` dtype that is not "
"a subarray dtype (structured or unstructured). "
"Got '%.100R'.", descr);
+ Py_DECREF(descr);
return NULL;
}
- else {
- Py_INCREF(descr);
- }
arr = PyArray_FromAny(obj, descr, 0, 0, NPY_ARRAY_FORCECAST, NULL);
return PyArray_Return((PyArrayObject *)arr);