diff options
author | Travis Oliphant <oliphant@enthought.com> | 2006-07-31 23:35:02 +0000 |
---|---|---|
committer | Travis Oliphant <oliphant@enthought.com> | 2006-07-31 23:35:02 +0000 |
commit | b83179e800eeeae0d1831b37416a2382f3cea073 (patch) | |
tree | 831010675e9671e2a5c13bc617ad816cbab138f3 | |
parent | 9051aeeb52b2d17a66e707d5393f8adec461bd48 (diff) | |
download | numpy-b83179e800eeeae0d1831b37416a2382f3cea073.tar.gz |
Fix ticket #218
-rw-r--r-- | numpy/core/src/arrayobject.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/numpy/core/src/arrayobject.c b/numpy/core/src/arrayobject.c index a1efd82e2..5f9ccdad1 100644 --- a/numpy/core/src/arrayobject.c +++ b/numpy/core/src/arrayobject.c @@ -5982,15 +5982,22 @@ array_descr_set(PyArrayObject *self, PyObject *arg) PyErr_SetString(PyExc_TypeError, "invalid data-type for array"); return -1; } - if (newtype->type_num == PyArray_OBJECT || \ - self->descr->type_num == PyArray_OBJECT) { - PyErr_SetString(PyExc_TypeError, \ - "Cannot change descriptor for object"\ + if (newtype->hasobject || self->descr->hasobject) { + PyErr_SetString(PyExc_TypeError, \ + "Cannot change data-type for object" \ "array."); Py_DECREF(newtype); return -1; } + if (newtype->elsize == 0) { + PyErr_SetString(PyExc_TypeError, + "data-type must not be 0-sized"); + Py_DECREF(newtype); + return -1; + } + + if ((newtype->elsize != self->descr->elsize) && \ (self->nd == 0 || !PyArray_ISONESEGMENT(self) || \ newtype->subarray)) goto fail; |