diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 36e861e0a9e52b9dc8f4f0b612200388e84cb43b..924b31293b0f259720899cf49331fa6b16ca8625 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -202,12 +202,16 @@ PyFloat_AsDouble(PyObject *op) if (op && PyFloat_Check(op)) return PyFloat_AS_DOUBLE((PyFloatObject*) op); - if (op == NULL || (nb = op->ob_type->tp_as_number) == NULL || - nb->nb_float == NULL) { + if (op == NULL) { PyErr_BadArgument(); return -1; } + if ((nb = op->ob_type->tp_as_number) == NULL || nb->nb_float == NULL) { + PyErr_SetString(PyExc_TypeError, "a float is required"); + return -1; + } + fo = (PyFloatObject*) (*nb->nb_float) (op); if (fo == NULL) return -1;