diff options
Diffstat (limited to 'numpy/core/src/arrayobject.c')
-rw-r--r-- | numpy/core/src/arrayobject.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/numpy/core/src/arrayobject.c b/numpy/core/src/arrayobject.c index 802cf64f1..c6041578d 100644 --- a/numpy/core/src/arrayobject.c +++ b/numpy/core/src/arrayobject.c @@ -1314,10 +1314,12 @@ PyArray_Scalar(void *data, PyArray_Descr *descr, PyObject *base) int swap; type_num = descr->type_num; + type = descr->typeobj; if (type_num == PyArray_BOOL) PyArrayScalar_RETURN_BOOL_FROM_LONG(*(Bool*)data); - else if (type_num == PyArray_OBJECT || \ - ((type=descr->typeobj)==NULL)) { + else if (type_num == PyArray_OBJECT || + (PyTypeNum_ISUSERDEF(type_num) && + !(PyType_IsSubtype(type, &PyGenericArrType_Type)))) { return descr->f->getitem(data, base); } itemsize = descr->elsize; @@ -1540,8 +1542,7 @@ PyArray_TypeNumFromName(char *str) for (i=0; i<NPY_NUMUSERTYPES; i++) { descr = userdescrs[i]; - if (descr->typeobj && - strcmp(descr->typeobj->tp_name, str) == 0) + if (strcmp(descr->typeobj->tp_name, str) == 0) return descr->type_num; } @@ -1588,12 +1589,10 @@ PyArray_RegisterDataType(PyArray_Descr *descr) " is missing."); return -1; } - /* if (descr->typeobj == NULL) { PyErr_SetString(PyExc_ValueError, "missing typeobject"); return -1; } - */ userdescrs = realloc(userdescrs, (NPY_NUMUSERTYPES+1)*sizeof(void *)); if (userdescrs == NULL) { @@ -10662,12 +10661,6 @@ arraydescr_typename_get(PyArray_Descr *self) static int prefix_len=0; if (PyTypeNum_ISUSERDEF(self->type_num)) { - if (typeobj == NULL) { - return PyString_FromFormat("%c%d (%d)", - self->kind, - self->elsize, - self->type_num); - } s = strrchr(typeobj->tp_name, '.'); if (s == NULL) { res = PyString_FromString(typeobj->tp_name); @@ -10891,10 +10884,6 @@ arraydescr_reduce(PyArray_Descr *self, PyObject *args) Py_DECREF(mod); if (obj == NULL) {Py_DECREF(ret); return NULL;} PyTuple_SET_ITEM(ret, 0, obj); - if (self->typeobj == NULL) { /* Must handle this case in getitem */ - obj = self->f->getitem(NULL, NULL); - if (obj == NULL) {Py_DECREF(ret); return NULL;} - } if (PyTypeNum_ISUSERDEF(self->type_num) || \ ((self->type_num == PyArray_VOID && \ self->typeobj != &PyVoidArrType_Type))) { |