Make PyNumber_Check() a bit more careful, since all sorts of things
now have tp_as_number. Check for nb_int or nb_float.
This commit is contained in:
parent
55dc26cbc7
commit
6921eca227
|
@ -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)
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue