diff --git a/Misc/NEWS b/Misc/NEWS index 5e0bad46cfd..19752f03c6e 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -89,6 +89,10 @@ Core and builtins Extension modules ----------------- +- operator.isNumberType() now checks that the object has a nb_int or + nb_float slot, rather than simply checking whether it has a non-NULL + tp_as_number pointer. + - The imp module now has ways to acquire and release the "import lock": imp.acquire_lock() and imp.release_lock(). Note: this is a reentrant lock, so releasing the lock only truly releases it when @@ -318,6 +322,10 @@ Build C API ----- +- PyNumber_Check() now checks that the object has a nb_int or nb_float + slot, rather than simply checking whether it has a non-NULL + tp_as_number pointer. + - A C type that inherits from a base type that defines tp_as_buffer will now inherit the tp_as_buffer pointer if it doesn't define one. (SF #681367) diff --git a/Objects/abstract.c b/Objects/abstract.c index c18d5e7f78f..b4fbd32a872 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -308,7 +308,9 @@ int PyObject_AsWriteBuffer(PyObject *obj, int PyNumber_Check(PyObject *o) { - return o && o->ob_type->tp_as_number; + return o && o->ob_type->tp_as_number && + (o->ob_type->tp_as_number->nb_int || + o->ob_type->tp_as_number->nb_float); } /* Binary operators */