summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Oliphant <oliphant@enthought.com>2009-12-03 03:34:01 +0000
committerTravis Oliphant <oliphant@enthought.com>2009-12-03 03:34:01 +0000
commit541798c0ec040c11ee7b1cdab9b35865546dc28d (patch)
treeb6eba1a0f941a2649ef87ac600722d0a2fdf98fc
parent2f300ed50be961076a28c60a7227233ce72975aa (diff)
downloadnumpy-541798c0ec040c11ee7b1cdab9b35865546dc28d.tar.gz
Clean-up PyArray_EnsureArray so there is one return point.
-rw-r--r--numpy/core/src/multiarray/ctors.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/numpy/core/src/multiarray/ctors.c b/numpy/core/src/multiarray/ctors.c
index c6833d256..41b1ae131 100644
--- a/numpy/core/src/multiarray/ctors.c
+++ b/numpy/core/src/multiarray/ctors.c
@@ -2322,24 +2322,20 @@ PyArray_EnsureArray(PyObject *op)
{
PyObject *new;
- if (op == NULL) {
- return NULL;
- }
- if (PyArray_CheckExact(op)) {
- return op;
+ if ((op == NULL) || (PyArray_CheckExact(op))) {
+ new = op;
+ Py_XINCREF(new);
}
- if (PyArray_Check(op)) {
+ else if (PyArray_Check(op)) {
new = PyArray_View((PyArrayObject *)op, NULL, &PyArray_Type);
- Py_DECREF(op);
- return new;
}
- if (PyArray_IsScalar(op, Generic)) {
+ else if (PyArray_IsScalar(op, Generic)) {
new = PyArray_FromScalar(op, NULL);
- Py_DECREF(op);
- return new;
}
- new = PyArray_FromAny(op, NULL, 0, 0, ENSUREARRAY, NULL);
- Py_DECREF(op);
+ else {
+ new = PyArray_FromAny(op, NULL, 0, 0, ENSUREARRAY, NULL);
+ }
+ Py_XDECREF(op);
return new;
}