summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numpy/core/src/multiarray/buffer.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/numpy/core/src/multiarray/buffer.c b/numpy/core/src/multiarray/buffer.c
index 3b3bba663..1f4f676ba 100644
--- a/numpy/core/src/multiarray/buffer.c
+++ b/numpy/core/src/multiarray/buffer.c
@@ -474,18 +474,18 @@ _buffer_info_new(PyObject *obj, int flags)
PyErr_NoMemory();
goto fail;
}
+ info->ndim = 0;
+ info->shape = NULL;
+ info->strides = NULL;
+
descr = PyArray_DescrFromScalar(obj);
if (descr == NULL) {
goto fail;
}
- info->ndim = 0;
- info->shape = NULL;
- info->strides = NULL;
}
else {
assert(PyArray_Check(obj));
PyArrayObject * arr = (PyArrayObject *)obj;
- descr = PyArray_DESCR(arr);
info = PyObject_Malloc(sizeof(_buffer_info_t) +
sizeof(Py_ssize_t) * PyArray_NDIM(arr) * 2);
@@ -544,6 +544,7 @@ _buffer_info_new(PyObject *obj, int flags)
}
}
}
+ descr = PyArray_DESCR(arr);
Py_INCREF(descr);
}
@@ -560,6 +561,7 @@ _buffer_info_new(PyObject *obj, int flags)
info->format = fmt.s;
}
else {
+ Py_DECREF(descr);
info->format = NULL;
}
return info;