Kaydet (Commit) 6921eca2 authored tarafından Guido van Rossum's avatar Guido van Rossum

Make PyNumber_Check() a bit more careful, since all sorts of things

now have tp_as_number.  Check for nb_int or nb_float.
üst 55dc26cb
...@@ -89,6 +89,10 @@ Core and builtins ...@@ -89,6 +89,10 @@ Core and builtins
Extension modules 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 - The imp module now has ways to acquire and release the "import
lock": imp.acquire_lock() and imp.release_lock(). Note: this is a lock": imp.acquire_lock() and imp.release_lock(). Note: this is a
reentrant lock, so releasing the lock only truly releases it when reentrant lock, so releasing the lock only truly releases it when
...@@ -318,6 +322,10 @@ Build ...@@ -318,6 +322,10 @@ Build
C API 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 - 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. will now inherit the tp_as_buffer pointer if it doesn't define one.
(SF #681367) (SF #681367)
......
...@@ -308,7 +308,9 @@ int PyObject_AsWriteBuffer(PyObject *obj, ...@@ -308,7 +308,9 @@ int PyObject_AsWriteBuffer(PyObject *obj,
int int
PyNumber_Check(PyObject *o) 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 */ /* Binary operators */
......
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