summaryrefslogtreecommitdiff
path: root/numpy/core/src/arrayobject.c
diff options
context:
space:
mode:
authorTravis Oliphant <oliphant@enthought.com>2006-09-23 18:35:46 +0000
committerTravis Oliphant <oliphant@enthought.com>2006-09-23 18:35:46 +0000
commitd0d5a9218ecb31041e9e20807ff2f4ccca0bbbfb (patch)
treec2560907ec7764ad0e705e7ef49d774925480b0c /numpy/core/src/arrayobject.c
parent61838cf125b8308d152266f3eab2c6815377e862 (diff)
downloadnumpy-d0d5a9218ecb31041e9e20807ff2f4ccca0bbbfb.tar.gz
Fix ticket #289 plus improve the way array data-types print and arrays represent themselves.
Diffstat (limited to 'numpy/core/src/arrayobject.c')
-rw-r--r--numpy/core/src/arrayobject.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/numpy/core/src/arrayobject.c b/numpy/core/src/arrayobject.c
index 8bd67cb7f..53cc31498 100644
--- a/numpy/core/src/arrayobject.c
+++ b/numpy/core/src/arrayobject.c
@@ -7739,6 +7739,12 @@ PyArray_FromArray(PyArrayObject *arr, PyArray_Descr *newtype, int flags)
if (newtype == NULL) {newtype = oldtype; Py_INCREF(oldtype);}
type = newtype->type_num;
itemsize = newtype->elsize;
+ if (itemsize == 0) {
+ PyArray_DESCR_REPLACE(newtype);
+ if (newtype == NULL) return NULL;
+ newtype->elsize = oldtype->elsize;
+ itemsize = newtype->elsize;
+ }
/* Don't copy if sizes are compatible */
if ((flags & ENSURECOPY) || PyArray_EquivTypes(oldtype, newtype)) {
@@ -11126,13 +11132,11 @@ arraydescr_str(PyArray_Descr *self)
PyString_ConcatAndDel(&t, PyString_FromString(")"));
sub = t;
}
+ else if (PyDataType_ISFLEXIBLE(self) || !PyArray_ISNBO(self->byteorder)) {
+ sub = arraydescr_protocol_typestr_get(self);
+ }
else {
- if (!PyArray_ISNBO(self->byteorder)) {
- sub = arraydescr_protocol_typestr_get(self);
- }
- else {
- sub = arraydescr_typename_get(self);
- }
+ sub = arraydescr_typename_get(self);
}
return sub;
}