]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-43270: Remove private _PyErr_OCCURRED() macro (GH-24579)
authorVictor Stinner <vstinner@python.org>
Fri, 19 Feb 2021 14:08:54 +0000 (15:08 +0100)
committerGitHub <noreply@github.com>
Fri, 19 Feb 2021 14:08:54 +0000 (15:08 +0100)
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.

Include/pyerrors.h
Misc/NEWS.d/next/C API/2021-02-19-14-28-26.bpo-43270.UKx4XN.rst [new file with mode: 0644]
Python/ceval.c

index 979a26ba68a0335b760756e08ba55bb311353ea6..692d67175741e53f3258398e19049156420b18a3 100644 (file)
@@ -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 (file)
index 0000000..ab8c977
--- /dev/null
@@ -0,0 +1,2 @@
+Remove the private ``_PyErr_OCCURRED()`` macro: use the public
+:c:func:`PyErr_Occurred` function instead.
index 81a21c9a0f53431512d97915d4b9db70aea2ae83..4771a516a96e8fe4783faa8c0e845c970db3ead7 100644 (file)
@@ -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,