diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2009-03-08 21:51:07 +0000 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2009-03-08 21:51:07 +0000 |
commit | 677173f6356183abd726a0692768916826089b7f (patch) | |
tree | 1d8d334bf507d79696e09e99cb96927d7b508360 /numpy/core/src | |
parent | e1c91c74297b39a19e7d58aa0abaa32b23ddf446 (diff) | |
download | numpy-677173f6356183abd726a0692768916826089b7f.tar.gz |
Apply patch in ticket #826 to fix problem with subtypes.
Diffstat (limited to 'numpy/core/src')
-rw-r--r-- | numpy/core/src/scalarmathmodule.c.src | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/numpy/core/src/scalarmathmodule.c.src b/numpy/core/src/scalarmathmodule.c.src index e48b6e14e..6b2fa5b0f 100644 --- a/numpy/core/src/scalarmathmodule.c.src +++ b/numpy/core/src/scalarmathmodule.c.src @@ -551,24 +551,28 @@ _@name@_convert_to_ctype(PyObject *a, @name@ *arg1) } else if (PyArray_IsScalar(a, Generic)) { PyArray_Descr *descr1; - int ret; + if (!PyArray_IsScalar(a, Number)) { return -1; } descr1 = PyArray_DescrFromTypeObject((PyObject *)(a->ob_type)); if (PyArray_CanCastSafely(descr1->type_num, PyArray_@NAME@)) { PyArray_CastScalarDirect(a, descr1, arg1, PyArray_@NAME@); - ret = 0; + Py_DECREF(descr1); + return 0; } else { - ret = -1; + Py_DECREF(descr1); + return -1; } - Py_DECREF(descr1); - return ret; + } + else if (PyArray_GetPriority(a, PyArray_SUBTYPE_PRIORITY) > + PyArray_SUBTYPE_PRIORITY) { + return -2; } else if ((temp = PyArray_ScalarFromObject(a)) != NULL) { - int retval; - retval = _@name@_convert_to_ctype(temp, arg1); + int retval = _@name@_convert_to_ctype(temp, arg1); + Py_DECREF(temp); return retval; } |