summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
Diffstat (limited to 'numpy')
-rw-r--r--numpy/core/src/multiarray/descriptor.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/numpy/core/src/multiarray/descriptor.c b/numpy/core/src/multiarray/descriptor.c
index 09093fdcb..a93897198 100644
--- a/numpy/core/src/multiarray/descriptor.c
+++ b/numpy/core/src/multiarray/descriptor.c
@@ -1044,7 +1044,6 @@ _convert_from_dict(PyObject *obj, int align)
PyErr_Clear();
} else {
if (tmp == Py_True) {
- Py_DECREF(tmp);
align = 1;
}
else if (tmp != Py_False) {
@@ -1054,6 +1053,7 @@ _convert_from_dict(PyObject *obj, int align)
"but its value is neither True nor False");
goto fail;
}
+ Py_DECREF(tmp);
}
totalsize = 0;
@@ -1209,9 +1209,7 @@ _convert_from_dict(PyObject *obj, int align)
}
new->elsize = totalsize;
if (!PyTuple_Check(names)) {
- PyObject *tmp = PySequence_Tuple(names);
- Py_DECREF(names);
- names = tmp;
+ Py_SETREF(names, PySequence_Tuple(names));
}
new->names = names;
new->fields = fields;
@@ -1278,10 +1276,13 @@ _convert_from_dict(PyObject *obj, int align)
else if (new->metadata == NULL) {
new->metadata = metadata;
}
- else if (PyDict_Merge(new->metadata, metadata, 0) == -1) {
- Py_DECREF(new);
+ else {
+ int ret = PyDict_Merge(new->metadata, metadata, 0);
Py_DECREF(metadata);
- goto fail;
+ if (ret == -1) {
+ Py_DECREF(new);
+ goto fail;
+ }
}
return new;