[Numpy-svn] r8361 - trunk/numpy/core/src/multiarray
numpy-svn at scipy.org
numpy-svn at scipy.org
Sun Apr 25 10:50:14 EDT 2010
Author: charris
Date: 2010-04-25 09:50:14 -0500 (Sun, 25 Apr 2010)
New Revision: 8361
Modified:
trunk/numpy/core/src/multiarray/methods.c
Log:
BUG: Fix the fix so resize works like it is supposed to.
Modified: trunk/numpy/core/src/multiarray/methods.c
===================================================================
--- trunk/numpy/core/src/multiarray/methods.c 2010-04-25 09:57:19 UTC (rev 8360)
+++ trunk/numpy/core/src/multiarray/methods.c 2010-04-25 14:50:14 UTC (rev 8361)
@@ -904,23 +904,42 @@
return PyArray_NewCopy(self, fortran);
}
-
+#include <stdio.h>
static PyObject *
array_resize(PyArrayObject *self, PyObject *args, PyObject *kwds)
{
static char *kwlist[] = {"refcheck", NULL};
+ intp size = PyTuple_Size(args);
+ int refcheck = 1;
PyArray_Dims newshape;
PyObject *ret;
- int refcheck = 1;
- if (PyTuple_GET_ITEM(args, 0) == Py_None) {
+
+ if (kwds != NULL) {
+ PyObject *tmp = PyTuple_New(0);
+ if (!PyArg_ParseTupleAndKeywords(tmp, kwds, "|i", kwlist, &refcheck)) {
+ Py_XDECREF(tmp);
+ return NULL;
+ }
+ Py_DECREF(tmp);
+ }
+
+ if (size == 0) {
Py_INCREF(Py_None);
return Py_None;
}
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&|i", kwlist,
- PyArray_IntpConverter, &newshape, &refcheck)) {
- return NULL;
+ else if (size == 1) {
+ PyObject *obj = PyTuple_GET_ITEM(args, 0);
+ if (obj == Py_None) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+ PyArray_IntpConverter(obj, &newshape);
}
+ else {
+ PyArray_IntpConverter(args, &newshape);
+ }
+
ret = PyArray_Resize(self, &newshape, refcheck, PyArray_CORDER);
PyDimMem_FREE(newshape.ptr);
if (ret == NULL) {
More information about the Numpy-svn
mailing list