summaryrefslogtreecommitdiff
path: root/numpy/core/src/arrayobject.c
diff options
context:
space:
mode:
authorTravis Oliphant <oliphant@enthought.com>2008-08-06 17:34:56 +0000
committerTravis Oliphant <oliphant@enthought.com>2008-08-06 17:34:56 +0000
commitded1bf725d022e9e2ac5df3d6785a14e702f6fec (patch)
treec9b811585cd725cc69c6173dd736af64cdf98e86 /numpy/core/src/arrayobject.c
parentdb148964e45b01604e6df0a8e0f3c35f2fc951c6 (diff)
downloadnumpy-ded1bf725d022e9e2ac5df3d6785a14e702f6fec.tar.gz
Fix ticket #877 along with other bugs not yet reported for data-types with titles.
Diffstat (limited to 'numpy/core/src/arrayobject.c')
-rw-r--r--numpy/core/src/arrayobject.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/numpy/core/src/arrayobject.c b/numpy/core/src/arrayobject.c
index d1074a887..1fbbe6a9e 100644
--- a/numpy/core/src/arrayobject.c
+++ b/numpy/core/src/arrayobject.c
@@ -13,7 +13,7 @@
Travis Oliphant, oliphant@ee.byu.edu
Brigham Young Univeristy
-:8613
+
maintainer email: oliphant.travis@ieee.org
Numarray design (which provided guidance) by
@@ -171,6 +171,7 @@ PyArray_Item_INCREF(char *data, PyArray_Descr *descr)
Py_ssize_t pos=0;
while (PyDict_Next(descr->fields, &pos, &key, &value)) {
+ if NPY_TITLE_KEY(key, value) continue;
if (!PyArg_ParseTuple(value, "Oi|O", &new, &offset,
&title)) {
return;
@@ -202,8 +203,10 @@ PyArray_Item_XDECREF(char *data, PyArray_Descr *descr)
PyArray_Descr *new;
int offset;
Py_ssize_t pos=0;
+
while (PyDict_Next(descr->fields, &pos, &key, &value)) {
- if (!PyArg_ParseTuple(value, "Oi|O", &new, &offset,
+ if NPY_TITLE_KEY(key, value) continue;
+ if (!PyArg_ParseTuple(value, "Oi|O", &new, &offset,
&title)) {
return;
}
@@ -4814,6 +4817,7 @@ _void_compare(PyArrayObject *self, PyArrayObject *other, int cmp_op)
op = (cmp_op == Py_EQ ? n_ops.logical_and : n_ops.logical_or);
while (PyDict_Next(self->descr->fields, &pos, &key, &value)) {
+ if NPY_TITLE_KEY(key, value) continue;
a = PyArray_EnsureAnyArray(array_subscript(self, key));
if (a==NULL) {
Py_XDECREF(res);
@@ -5706,6 +5710,7 @@ _putzero(char *optr, PyObject *zero, PyArray_Descr *dtype)
int offset;
Py_ssize_t pos=0;
while (PyDict_Next(dtype->fields, &pos, &key, &value)) {
+ if NPY_TITLE_KEY(key, value) continue;
if (!PyArg_ParseTuple(value, "Oi|O", &new, &offset,
&title)) return;
_putzero(optr + offset, zero, new);
@@ -5876,6 +5881,7 @@ _fillobject(char *optr, PyObject *obj, PyArray_Descr *dtype)
int offset;
Py_ssize_t pos=0;
while (PyDict_Next(dtype->fields, &pos, &key, &value)) {
+ if NPY_TITLE_KEY(key, value) continue;
if (!PyArg_ParseTuple(value, "Oi|O", &new, &offset,
&title)) return;
_fillobject(optr + offset, obj, new);
@@ -11296,6 +11302,7 @@ _arraydescr_isnative(PyArray_Descr *self)
int offset;
Py_ssize_t pos=0;
while(PyDict_Next(self->fields, &pos, &key, &value)) {
+ if NPY_TITLE_KEY(key, value) continue;
if (!PyArg_ParseTuple(value, "Oi|O", &new, &offset,
&title)) return -1;
if (!_arraydescr_isnative(new)) return 0;
@@ -11567,6 +11574,7 @@ _descr_find_object(PyArray_Descr *self)
int offset;
Py_ssize_t pos=0;
while (PyDict_Next(self->fields, &pos, &key, &value)) {
+ if NPY_TITLE_KEY(key, value) continue;
if (!PyArg_ParseTuple(value, "Oi|O", &new, &offset,
&title)) {
PyErr_Clear();
@@ -11760,6 +11768,7 @@ PyArray_DescrNewByteorder(PyArray_Descr *self, char newendian)
/* make new dictionary with replaced */
/* PyArray_Descr Objects */
while(PyDict_Next(self->fields, &pos, &key, &value)) {
+ if NPY_TITLE_KEY(key, value) continue;
if (!PyString_Check(key) || \
!PyTuple_Check(value) || \
((len=PyTuple_GET_SIZE(value)) < 2))