STINNER Victor <vstin...@python.org> 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 <rep...@bugs.python.org> <https://bugs.python.org/issue38980> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com