diff options
author | Irit Katriel <1055913+iritkatriel@users.noreply.github.com> | 2021-12-17 14:46:22 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-17 14:46:22 (GMT) |
commit | 396b58345f81d4c8c5a52546d2288e666a1b9b8b (patch) | |
tree | 89140d0930da874df676cfac27d2e85e746a5fc1 /Include | |
parent | 62a0a2a25dbe3ba6f2973a37a3022d982fdc163c (diff) | |
download | cpython-396b58345f81d4c8c5a52546d2288e666a1b9b8b.zip cpython-396b58345f81d4c8c5a52546d2288e666a1b9b8b.tar.gz cpython-396b58345f81d4c8c5a52546d2288e666a1b9b8b.tar.bz2 |
bpo-45711: Remove type and traceback from exc_info (GH-30122)
* Do not PUSH/POP traceback or type to the stack as part of exc_info
* Remove exc_traceback and exc_type from _PyErr_StackItem
* Add to what's new, because this change breaks things like Cython
Diffstat (limited to 'Include')
-rw-r--r-- | Include/cpython/pystate.h | 2 | ||||
-rw-r--r-- | Include/internal/pycore_pyerrors.h | 12 |
2 files changed, 3 insertions, 11 deletions
diff --git a/Include/cpython/pystate.h b/Include/cpython/pystate.h index aa51828..c37123c 100644 --- a/Include/cpython/pystate.h +++ b/Include/cpython/pystate.h @@ -56,7 +56,7 @@ typedef struct _err_stackitem { * This ensures that the exception state is not impacted by "yields" * from an except handler. */ - PyObject *exc_type, *exc_value, *exc_traceback; + PyObject *exc_value; struct _err_stackitem *previous_item; diff --git a/Include/internal/pycore_pyerrors.h b/Include/internal/pycore_pyerrors.h index 5e8d202..b9fc36c 100644 --- a/Include/internal/pycore_pyerrors.h +++ b/Include/internal/pycore_pyerrors.h @@ -24,16 +24,7 @@ static inline PyObject* _PyErr_Occurred(PyThreadState *tstate) static inline void _PyErr_ClearExcState(_PyErr_StackItem *exc_state) { - PyObject *t, *v, *tb; - t = exc_state->exc_type; - v = exc_state->exc_value; - tb = exc_state->exc_traceback; - exc_state->exc_type = NULL; - exc_state->exc_value = NULL; - exc_state->exc_traceback = NULL; - Py_XDECREF(t); - Py_XDECREF(v); - Py_XDECREF(tb); + Py_CLEAR(exc_state->exc_value); } PyAPI_FUNC(PyObject*) _PyErr_StackItemToExcInfoTuple( @@ -114,6 +105,7 @@ PyAPI_FUNC(void) _Py_NO_RETURN _Py_FatalRefcountErrorFunc( #define _Py_FatalRefcountError(message) _Py_FatalRefcountErrorFunc(__func__, message) + #ifdef __cplusplus } #endif |