From 677173f6356183abd726a0692768916826089b7f Mon Sep 17 00:00:00 2001 From: Charles Harris Date: Sun, 8 Mar 2009 21:51:07 +0000 Subject: Apply patch in ticket #826 to fix problem with subtypes. --- numpy/core/src/scalarmathmodule.c.src | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'numpy/core/src') 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; } -- cgit v1.2.1