have a nb_float slot. This matches what PyInt_AsLong does.
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;