Commit ba195179 authored by Stefan Behnel's avatar Stefan Behnel

Make underscore number parsing independent of "CYTHON_USE_TYPE_SLOTS" guard.

parent b738fd8c
......@@ -601,41 +601,40 @@ static double __Pyx__PyObject_AsDouble(PyObject* obj); /* proto */
//@requires: ObjectHandling.c::PyObjectCallOneArg
static double __Pyx__PyObject_AsDouble(PyObject* obj) {
PyObject* float_value;
#if !CYTHON_USE_TYPE_SLOTS
float_value = PyNumber_Float(obj); if ((0)) goto bad;
// avoid "unused" warnings
(void)__Pyx_PyObject_CallOneArg;
(void)__Pyx_PyBytes_AsDouble;
(void)__Pyx_PyByteArray_AsDouble;
(void)__Pyx_PyUnicode_AsDouble;
#else
PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number;
if (PyUnicode_CheckExact(obj)) {
return __Pyx_PyUnicode_AsDouble(obj);
} else if (PyBytes_CheckExact(obj)) {
return __Pyx_PyBytes_AsDouble(obj);
} else if (PyByteArray_CheckExact(obj)) {
return __Pyx_PyByteArray_AsDouble(obj);
} else if (likely(nb) && likely(nb->nb_float)) {
float_value = nb->nb_float(obj);
if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) {
__Pyx_TypeName float_value_type_name = __Pyx_PyType_GetName(Py_TYPE(float_value));
PyErr_Format(PyExc_TypeError,
"__float__ returned non-float (type " __Pyx_FMT_TYPENAME ")",
float_value_type_name);
__Pyx_DECREF_TypeName(float_value_type_name);
Py_DECREF(float_value);
goto bad;
}
} else {
float_value = __Pyx_PyObject_CallOneArg((PyObject*)&PyFloat_Type, obj);
}
PyObject* float_value;
#if !CYTHON_USE_TYPE_SLOTS
float_value = PyNumber_Float(obj); if ((0)) goto bad;
// avoid "unused" warnings
(void)__Pyx_PyObject_CallOneArg;
#else
PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number;
if (likely(nb) && likely(nb->nb_float)) {
float_value = nb->nb_float(obj);
if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) {
__Pyx_TypeName float_value_type_name = __Pyx_PyType_GetName(Py_TYPE(float_value));
PyErr_Format(PyExc_TypeError,
"__float__ returned non-float (type " __Pyx_FMT_TYPENAME ")",
float_value_type_name);
__Pyx_DECREF_TypeName(float_value_type_name);
Py_DECREF(float_value);
goto bad;
}
} else {
float_value = __Pyx_PyObject_CallOneArg((PyObject*)&PyFloat_Type, obj);
}
#endif
if (likely(float_value)) {
double value = PyFloat_AS_DOUBLE(float_value);
Py_DECREF(float_value);
return value;
if (likely(float_value)) {
double value = PyFloat_AS_DOUBLE(float_value);
Py_DECREF(float_value);
return value;
}
}
bad:
return (double)-1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment