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 /numpy/core | |
| parent | 9051aeeb52b2d17a66e707d5393f8adec461bd48 (diff) | |
| download | numpy-b83179e800eeeae0d1831b37416a2382f3cea073.tar.gz | |
Fix ticket #218
Diffstat (limited to 'numpy/core')
| -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; |
