summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>2021-12-17 14:46:22 (GMT)
committerGitHub <noreply@github.com>2021-12-17 14:46:22 (GMT)
commit396b58345f81d4c8c5a52546d2288e666a1b9b8b (patch)
tree89140d0930da874df676cfac27d2e85e746a5fc1 /Include
parent62a0a2a25dbe3ba6f2973a37a3022d982fdc163c (diff)
downloadcpython-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.h2
-rw-r--r--Include/internal/pycore_pyerrors.h12
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