mirror of https://github.com/python/cpython
gh-105140: remove unused arg of _PyErr_ChainStackItem (#105141)
This commit is contained in:
parent
ede89af605
commit
60f8117d0c
|
@ -61,8 +61,7 @@ PyAPI_FUNC(void) _PyErr_SetObject(
|
||||||
PyObject *type,
|
PyObject *type,
|
||||||
PyObject *value);
|
PyObject *value);
|
||||||
|
|
||||||
PyAPI_FUNC(void) _PyErr_ChainStackItem(
|
PyAPI_FUNC(void) _PyErr_ChainStackItem(void);
|
||||||
_PyErr_StackItem *exc_info);
|
|
||||||
|
|
||||||
PyAPI_FUNC(void) _PyErr_Clear(PyThreadState *tstate);
|
PyAPI_FUNC(void) _PyErr_Clear(PyThreadState *tstate);
|
||||||
|
|
||||||
|
|
|
@ -222,7 +222,7 @@ gen_send_ex2(PyGenObject *gen, PyObject *arg, PyObject **presult,
|
||||||
|
|
||||||
if (exc) {
|
if (exc) {
|
||||||
assert(_PyErr_Occurred(tstate));
|
assert(_PyErr_Occurred(tstate));
|
||||||
_PyErr_ChainStackItem(NULL);
|
_PyErr_ChainStackItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
gen->gi_frame_state = FRAME_EXECUTING;
|
gen->gi_frame_state = FRAME_EXECUTING;
|
||||||
|
|
|
@ -703,52 +703,28 @@ _PyErr_ChainExceptions1(PyObject *exc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the currently set exception's context to the given exception.
|
/* If the current thread is handling an exception (exc_info is ), set this
|
||||||
|
exception as the context of the current raised exception.
|
||||||
If the provided exc_info is NULL, then the current Python thread state's
|
|
||||||
exc_info will be used for the context instead.
|
|
||||||
|
|
||||||
This function can only be called when _PyErr_Occurred() is true.
|
This function can only be called when _PyErr_Occurred() is true.
|
||||||
Also, this function won't create any cycles in the exception context
|
Also, this function won't create any cycles in the exception context
|
||||||
chain to the extent that _PyErr_SetObject ensures this. */
|
chain to the extent that _PyErr_SetObject ensures this. */
|
||||||
void
|
void
|
||||||
_PyErr_ChainStackItem(_PyErr_StackItem *exc_info)
|
_PyErr_ChainStackItem(void)
|
||||||
{
|
{
|
||||||
PyThreadState *tstate = _PyThreadState_GET();
|
PyThreadState *tstate = _PyThreadState_GET();
|
||||||
assert(_PyErr_Occurred(tstate));
|
assert(_PyErr_Occurred(tstate));
|
||||||
|
|
||||||
int exc_info_given;
|
_PyErr_StackItem *exc_info = tstate->exc_info;
|
||||||
if (exc_info == NULL) {
|
|
||||||
exc_info_given = 0;
|
|
||||||
exc_info = tstate->exc_info;
|
|
||||||
} else {
|
|
||||||
exc_info_given = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exc_info->exc_value == NULL || exc_info->exc_value == Py_None) {
|
if (exc_info->exc_value == NULL || exc_info->exc_value == Py_None) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_PyErr_StackItem *saved_exc_info;
|
PyObject *exc = _PyErr_GetRaisedException(tstate);
|
||||||
if (exc_info_given) {
|
|
||||||
/* Temporarily set the thread state's exc_info since this is what
|
|
||||||
_PyErr_SetObject uses for implicit exception chaining. */
|
|
||||||
saved_exc_info = tstate->exc_info;
|
|
||||||
tstate->exc_info = exc_info;
|
|
||||||
}
|
|
||||||
|
|
||||||
PyObject *typ, *val, *tb;
|
|
||||||
_PyErr_Fetch(tstate, &typ, &val, &tb);
|
|
||||||
|
|
||||||
/* _PyErr_SetObject sets the context from PyThreadState. */
|
/* _PyErr_SetObject sets the context from PyThreadState. */
|
||||||
_PyErr_SetObject(tstate, typ, val);
|
_PyErr_SetObject(tstate, (PyObject *) Py_TYPE(exc), exc);
|
||||||
Py_DECREF(typ); // since _PyErr_Occurred was true
|
Py_DECREF(exc); // since _PyErr_Occurred was true
|
||||||
Py_XDECREF(val);
|
|
||||||
Py_XDECREF(tb);
|
|
||||||
|
|
||||||
if (exc_info_given) {
|
|
||||||
tstate->exc_info = saved_exc_info;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
|
Loading…
Reference in New Issue