STINNER Victor <[email protected]> added the comment:
> In case of malloc, every memory allocating code need to use
> malloc/calloc/realloc. This is official and the only way to allocate a
> memory. But we do not guarantee that Python core uses only public C API like
> PyErr_Occurred(). It can use more low-level and efficient but less safer C
> API internally. It can replace the function with a macro which access
> internal structures directly (for compiling the core only). And this is
> actually the case. Overridding the public C API functions not always has an
> effect on the core.
To confirm what you said: if we take the specific example of PyErr_Occurred(),
I recently added a new _PyErr_Occurred() function which is declared as a static
inline function. _PyErr_Occurred() cannot be overriden.
static inline PyObject* _PyErr_Occurred(PyThreadState *tstate)
{
assert(tstate != NULL);
return tstate->curexc_type;
}
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue38980>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com