diff options
Diffstat (limited to 'numpy')
-rw-r--r-- | numpy/core/src/multiarray/buffer.c | 2 | ||||
-rw-r--r-- | numpy/core/src/multiarray/ctors.c | 3 | ||||
-rw-r--r-- | numpy/core/src/multiarray/descriptor.c | 7 | ||||
-rw-r--r-- | numpy/core/src/multiarray/methods.c | 4 |
4 files changed, 12 insertions, 4 deletions
diff --git a/numpy/core/src/multiarray/buffer.c b/numpy/core/src/multiarray/buffer.c index d14f87abb..13d7038d3 100644 --- a/numpy/core/src/multiarray/buffer.c +++ b/numpy/core/src/multiarray/buffer.c @@ -1057,7 +1057,7 @@ _descriptor_from_pep3118_format_fast(char const *s, PyObject **result) else { *result = (PyObject*)PyArray_DescrNewByteorder(descr, byte_order); Py_DECREF(descr); - if (result == NULL) { + if (*result == NULL) { return 0; } } diff --git a/numpy/core/src/multiarray/ctors.c b/numpy/core/src/multiarray/ctors.c index f16840d30..c2842d7ba 100644 --- a/numpy/core/src/multiarray/ctors.c +++ b/numpy/core/src/multiarray/ctors.c @@ -1931,6 +1931,9 @@ PyArray_CheckFromAny(PyObject *op, PyArray_Descr *descr, int min_depth, if (!descr && PyArray_Check(op) && PyArray_ISBYTESWAPPED((PyArrayObject* )op)) { descr = PyArray_DescrNew(PyArray_DESCR((PyArrayObject *)op)); + if (descr == NULL) { + return NULL; + } } else if (descr && !PyArray_ISNBO(descr->byteorder)) { PyArray_DESCR_REPLACE(descr); diff --git a/numpy/core/src/multiarray/descriptor.c b/numpy/core/src/multiarray/descriptor.c index a5cb6a9fc..07abc755f 100644 --- a/numpy/core/src/multiarray/descriptor.c +++ b/numpy/core/src/multiarray/descriptor.c @@ -597,9 +597,7 @@ _convert_from_array_descr(PyObject *obj, int align) PyArray_Descr *new = PyArray_DescrNewFromType(NPY_VOID); if (new == NULL) { - Py_XDECREF(fields); - Py_XDECREF(nameslist); - return NULL; + goto fail; } new->fields = fields; new->names = nameslist; @@ -703,6 +701,9 @@ _convert_from_list(PyObject *obj, int align) totalsize += conv->elsize; } PyArray_Descr *new = PyArray_DescrNewFromType(NPY_VOID); + if (new == NULL) { + goto fail; + } new->fields = fields; new->names = nameslist; new->flags = dtypeflags; diff --git a/numpy/core/src/multiarray/methods.c b/numpy/core/src/multiarray/methods.c index 09b094171..792686cf0 100644 --- a/numpy/core/src/multiarray/methods.c +++ b/numpy/core/src/multiarray/methods.c @@ -1427,6 +1427,10 @@ array_partition(PyArrayObject *self, return NULL; } newd = PyArray_DescrNew(saved); + if (newd == NULL) { + Py_DECREF(new_name); + return NULL; + } Py_DECREF(newd->names); newd->names = new_name; ((PyArrayObject_fields *)self)->descr = newd; |