diff options
author | Pearu Peterson <pearu.peterson@gmail.com> | 2005-10-31 05:30:11 +0000 |
---|---|---|
committer | Pearu Peterson <pearu.peterson@gmail.com> | 2005-10-31 05:30:11 +0000 |
commit | 954c1d9339dbd366a2d5810c825c4784c85e0110 (patch) | |
tree | 8794e86d7b28f852367ce5b9e9fa0d01b06b5408 /scipy/f2py/src/fortranobject.c | |
parent | 9362a1d8d498985e41a35c089fc68cd280a0fde9 (diff) | |
download | numpy-954c1d9339dbd366a2d5810c825c4784c85e0110.tar.gz |
Fixed incorrect usage of PyArray_CanCastSafely.
Diffstat (limited to 'scipy/f2py/src/fortranobject.c')
-rw-r--r-- | scipy/f2py/src/fortranobject.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/scipy/f2py/src/fortranobject.c b/scipy/f2py/src/fortranobject.c index 16daa546a..05f712603 100644 --- a/scipy/f2py/src/fortranobject.c +++ b/scipy/f2py/src/fortranobject.c @@ -473,6 +473,12 @@ static int swap_arrays(PyArrayObject* arr1, PyArrayObject* arr2) { return 0; } +#define ARRAY_ISCOMPATIBLE(arr,type_num) \ +( (PyArray_ISINTEGER(arr) && PyTypeNum_ISINTEGER(type_num)) \ + ||(PyArray_ISFLOAT(arr) && PyTypeNum_ISFLOAT(type_num)) \ + ||(PyArray_ISCOMPLEX(arr) && PyTypeNum_ISCOMPLEX(type_num)) \ +) + extern PyArrayObject* array_from_pyobj(const int type_num, intp *dims, @@ -550,7 +556,7 @@ PyArrayObject* array_from_pyobj(const int type_num, if ((! (intent & F2PY_INTENT_COPY)) && PyArray_ITEMSIZE(arr)==descr->elsize - && PyArray_CanCastSafely(arr->descr->type_num,type_num) + && ARRAY_ISCOMPATIBLE(arr,type_num) ) { if ((intent & F2PY_INTENT_C)?PyArray_ISCARRAY(arr):PyArray_ISFARRAY(arr)) { if ((intent & F2PY_INTENT_OUT)) { @@ -572,8 +578,8 @@ PyArrayObject* array_from_pyobj(const int type_num, descr->elsize, PyArray_ITEMSIZE(arr) ); - if (!(PyArray_CanCastSafely(arr->descr->type_num,type_num))) - sprintf(mess+strlen(mess)," -- cannot cast safely from '%c' to '%c'", + if (!(ARRAY_ISCOMPATIBLE(arr,type_num))) + sprintf(mess+strlen(mess)," -- input '%c' not compatible to '%c'", arr->descr->type,descr->type); PyErr_SetString(PyExc_ValueError,mess); return NULL; |