diff options
author | Travis Oliphant <oliphant@enthought.com> | 2006-07-26 16:55:07 +0000 |
---|---|---|
committer | Travis Oliphant <oliphant@enthought.com> | 2006-07-26 16:55:07 +0000 |
commit | 44011bc6f9fadaef25dacf127f46ca66c2f04df3 (patch) | |
tree | e425546346747cba6b2d41e3fcd64d6eeede2383 /numpy | |
parent | c47dfadf925b567ad0ff7dc0331afa8247160240 (diff) | |
download | numpy-44011bc6f9fadaef25dacf127f46ca66c2f04df3.tar.gz |
Merge non-white space changes from ver1.0 branch. Change to Py_ssize_t and better error on align=True with array_descr conversion.
Diffstat (limited to 'numpy')
-rw-r--r-- | numpy/core/src/arrayobject.c | 45 | ||||
-rw-r--r-- | numpy/core/src/arraytypes.inc.src | 3 | ||||
-rw-r--r-- | numpy/core/src/scalartypes.inc.src | 5 |
3 files changed, 35 insertions, 18 deletions
diff --git a/numpy/core/src/arrayobject.c b/numpy/core/src/arrayobject.c index 836fa2e8b..854a848a2 100644 --- a/numpy/core/src/arrayobject.c +++ b/numpy/core/src/arrayobject.c @@ -4702,7 +4702,7 @@ _IsWriteable(PyArrayObject *ap) { PyObject *base=ap->base; void *dummy; - int n; + Py_ssize_t n; /* If we own our own data, then no-problem */ if ((base == NULL) || (ap->flags & OWNDATA)) return TRUE; @@ -5565,8 +5565,8 @@ array_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds) dims.ptr[0] = (buffer.len-(intp)offset) / itemsize; } else if ((strides.ptr == NULL) && \ - buffer.len < itemsize* \ - PyArray_MultiplyList(dims.ptr, dims.len)) { + (buffer.len < ((intp)itemsize)* \ + PyArray_MultiplyList(dims.ptr, dims.len))) { PyErr_SetString(PyExc_TypeError, "buffer is too small for " \ "requested array"); @@ -5684,7 +5684,7 @@ array_strides_set(PyArrayObject *self, PyObject *obj) PyArrayObject *new; intp numbytes=0; intp offset=0; - int buf_len; + Py_ssize_t buf_len; char *buf; if (!PyArray_IntpConverter(obj, &newstrides) || \ @@ -5874,7 +5874,7 @@ static int array_data_set(PyArrayObject *self, PyObject *op) { void *buf; - int buf_len; + Py_ssize_t buf_len; int writeable=1; if (PyObject_AsWriteBuffer(op, &buf, &buf_len) < 0) { @@ -7832,7 +7832,7 @@ PyArray_FromInterface(PyObject *input) PyArrayObject *ret; PyArray_Descr *type=NULL; char *data; - int buffer_len; + Py_ssize_t buffer_len; int res, i, n; intp dims[MAX_DIMS], strides[MAX_DIMS]; int dataflags = BEHAVED; @@ -7867,7 +7867,7 @@ PyArray_FromInterface(PyObject *input) } attr = PyDict_GetItemString(inter, "offset"); if (attr) { - long num = PyInt_AsLong(attr); + longlong num = PyLong_AsLongLong(attr); if (error_converting(num)) { PyErr_SetString(PyExc_TypeError, "offset "\ @@ -10445,13 +10445,30 @@ arraydescr_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds) conv = _convert_from_dict(odescr, 1); else if PyList_Check(odescr) { conv = _convert_from_list(odescr, 1, 0); - if ((conv == NULL) && - (!PyErr_Occurred())) { - PyErr_SetString(PyExc_ValueError, - "cannot specify align=1 "\ - "with array_descriptor "\ - "specification of the data-"\ - "type."); + if (conv == NULL) { + /* There is an errror. Possibly it's + because we have an array_descriptor. + Try converting from an array_descriptor. + If that fails then raise the old error. + */ + PyObject *type, *value, *traceback; + PyArray_Descr *temp; + PyErr_Fetch(&type, &value, &traceback); + temp = _convert_from_array_descr(odescr); + if (!PyErr_Occurred()) { + Py_DECREF(temp); + Py_XDECREF(type); + Py_XDECREF(value); + Py_XDECREF(traceback); + PyErr_SetString(PyExc_ValueError, + "align cannot be True" \ + " with array_descriptor " \ + "specification."); + } + else { + PyErr_Restore(type, value, traceback); + } + return NULL; } } else if PyString_Check(odescr) diff --git a/numpy/core/src/arraytypes.inc.src b/numpy/core/src/arraytypes.inc.src index 6e81c7659..a3aa90d4a 100644 --- a/numpy/core/src/arraytypes.inc.src +++ b/numpy/core/src/arraytypes.inc.src @@ -554,7 +554,7 @@ VOID_setitem(PyObject *op, char *ip, PyArrayObject *ap) /* Default is to use buffer interface to set item */ { const void *buffer; - int buflen; + Py_ssize_t buflen; if (descr->hasobject) { PyErr_SetString(PyExc_ValueError, "tried to set void-array with object" @@ -1370,7 +1370,6 @@ static Bool /**end repeat**/ - #define WHITESPACE " \t\n\r\v\f" #define WHITELEN 6 diff --git a/numpy/core/src/scalartypes.inc.src b/numpy/core/src/scalartypes.inc.src index 355b1047c..efd0816e4 100644 --- a/numpy/core/src/scalartypes.inc.src +++ b/numpy/core/src/scalartypes.inc.src @@ -884,7 +884,8 @@ gentype_real_get(PyObject *self) if (PyArray_IsScalar(self, ComplexFloating)) { typecode = _realdescr_fromcomplexscalar(self, &typenum); - ret = PyArray_Scalar(scalar_value(self, NULL), typecode, NULL); + ret = PyArray_Scalar(scalar_value(self, NULL), + typecode, NULL); Py_DECREF(typecode); return ret; } @@ -1226,7 +1227,7 @@ gentype_reduce(PyObject *self, PyObject *args) { PyObject *ret=NULL, *obj=NULL, *mod=NULL; const char *buffer; - int buflen; + Py_ssize_t buflen; /* Return a tuple of (callable object, arguments) */ |