convenience by the main thread where it has possession of the global
interpreter lock and can perform any Python API calls.
-.. cfunction:: void Py_AddPendingCall( int (*func)(void *), void *arg) )
+.. cfunction:: void Py_AddPendingCall( int (*func)(void *, void *arg) )
.. index:: single: Py_AddPendingCall()
Post a notification to the Python main thread. If successful,
- \*:attr`func` will be called with the argument :attr:`arg` at the earliest
- convenience. \*:attr:`func` will be called having the global interpreter
+ *func* will be called with the argument *arg* at the earliest
+ convenience. *func* will be called having the global interpreter
lock held and can thus use the full Python API and can take any
action such as setting object attributes to signal IO completion.
It must return 0 on success, or -1 signalling an exception.
else if (Py_TYPE(descr) == &PyCFunction_Type &&
PyCFunction_GET_FUNCTION(descr) ==
(PyCFunction)tp_new_wrapper &&
- strcmp(p->name, "__new__") == 0)
+ ptr == (void**)&type->tp_new)
{
/* The __new__ wrapper is not a wrapper descriptor,
so must be special-cased differently.
point out a bug in this reasoning a beer. */
}
else if (descr == Py_None &&
- strcmp(p->name, "__hash__") == 0) {
+ ptr == (void**)&type->tp_hash) {
/* We specifically allow __hash__ to be set to None
to prevent inheritance of the default
implementation from object.__hash__ */