[Numpy-svn] r5138 - branches/1.1.x/numpy/core/src

numpy-svn at scipy.org numpy-svn at scipy.org
Wed May 7 16:12:58 EDT 2008


Author: oliphant
Date: 2008-05-07 15:12:49 -0500 (Wed, 07 May 2008)
New Revision: 5138

Modified:
   branches/1.1.x/numpy/core/src/arrayobject.c
Log:
Apply a fix to PyArray_ToList to work with subclasses better.

Modified: branches/1.1.x/numpy/core/src/arrayobject.c
===================================================================
--- branches/1.1.x/numpy/core/src/arrayobject.c	2008-05-07 19:06:28 UTC (rev 5137)
+++ branches/1.1.x/numpy/core/src/arrayobject.c	2008-05-07 20:12:49 UTC (rev 5138)
@@ -1972,14 +1972,19 @@
     sz = self->dimensions[0];
     lp = PyList_New(sz);
     for(i = 0; i < sz; i++) {
-        v=(PyArrayObject *)array_big_item(self, i);
-        if (v->nd >= self->nd) {
-            PyErr_SetString(PyExc_RuntimeError,
-                            "array_item not returning smaller-" \
-                            "dimensional array");
-            Py_DECREF(v);
-            Py_DECREF(lp);
-            return NULL;
+	if (PyArray_CheckExact(self)) {
+	    v=(PyArrayObject *)array_big_item(self, i);
+	}
+	else {
+	    v = (PyArrayObject *)PySequence_GetItem((PyObject *)self, i);
+	    if ((!PyArray_Check(v)) || (v->nd >= self->nd)) {
+		PyErr_SetString(PyExc_RuntimeError,
+				"array_item not returning smaller-"	\
+				"dimensional array");
+		Py_DECREF(v);
+		Py_DECREF(lp);
+		return NULL;
+	    }
         }
         PyList_SetItem(lp, i, PyArray_ToList(v));
         Py_DECREF(v);




More information about the Numpy-svn mailing list