From: Victor Stinner Date: Fri, 19 Feb 2021 14:08:54 +0000 (+0100) Subject: bpo-43270: Remove private _PyErr_OCCURRED() macro (GH-24579) X-Git-Tag: v3.10.0a6~61 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a486054b24658fa623e030ddd4cc0cbfcac54ab0;p=thirdparty%2FPython%2Fcpython.git bpo-43270: Remove private _PyErr_OCCURRED() macro (GH-24579) Remove the private _PyErr_OCCURRED() macro: use the public PyErr_Occurred() function instead. CPython internals must use the internal _PyErr_Occurred(tstate) function instead: it is the most efficient way to check if an exception was raised. --- diff --git a/Include/pyerrors.h b/Include/pyerrors.h index 979a26ba68a0..692d67175741 100644 --- a/Include/pyerrors.h +++ b/Include/pyerrors.h @@ -30,12 +30,6 @@ PyAPI_FUNC(void) PyErr_SetExcInfo(PyObject *, PyObject *, PyObject *); macro is defined. */ PyAPI_FUNC(void) _Py_NO_RETURN Py_FatalError(const char *message); -#if defined(Py_DEBUG) || defined(Py_LIMITED_API) -#define _PyErr_OCCURRED() PyErr_Occurred() -#else -#define _PyErr_OCCURRED() (PyThreadState_GET()->curexc_type) -#endif - /* Error testing and normalization */ PyAPI_FUNC(int) PyErr_GivenExceptionMatches(PyObject *, PyObject *); PyAPI_FUNC(int) PyErr_ExceptionMatches(PyObject *); diff --git a/Misc/NEWS.d/next/C API/2021-02-19-14-28-26.bpo-43270.UKx4XN.rst b/Misc/NEWS.d/next/C API/2021-02-19-14-28-26.bpo-43270.UKx4XN.rst new file mode 100644 index 000000000000..ab8c9772cb0f --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-02-19-14-28-26.bpo-43270.UKx4XN.rst @@ -0,0 +1,2 @@ +Remove the private ``_PyErr_OCCURRED()`` macro: use the public +:c:func:`PyErr_Occurred` function instead. diff --git a/Python/ceval.c b/Python/ceval.c index 81a21c9a0f53..4771a516a96e 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -2750,7 +2750,7 @@ main_loop: (PyDictObject *)f->f_builtins, name); if (v == NULL) { - if (!_PyErr_OCCURRED()) { + if (!_PyErr_Occurred(tstate)) { /* _PyDict_LoadGlobal() returns NULL without raising * an exception if the key doesn't exist */ format_exc_check_arg(tstate, PyExc_NameError,