From: Guido van Rossum Date: Tue, 18 Feb 2003 16:36:28 +0000 (+0000) Subject: Make PyNumber_Check() a bit more careful, since all sorts of things X-Git-Tag: v2.3c1~1800 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6921eca227ac2283ebcdf98e10aebea57bd5daf3;p=thirdparty%2FPython%2Fcpython.git Make PyNumber_Check() a bit more careful, since all sorts of things now have tp_as_number. Check for nb_int or nb_float. --- diff --git a/Misc/NEWS b/Misc/NEWS index 5e0bad46cfd3..19752f03c6e1 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 c18d5e7f78ff..b4fbd32a872c 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 */