mirror of
https://github.com/python/cpython.git
synced 2025-08-31 22:18:28 +00:00
gh-128799: Add frame of except* to traceback when wrapping a naked exception (#128971)
This commit is contained in:
parent
9e52e553f4
commit
c39ae8922b
7 changed files with 44 additions and 6 deletions
|
@ -27,6 +27,7 @@
|
|||
#include "pycore_range.h" // _PyRangeIterObject
|
||||
#include "pycore_setobject.h" // _PySet_Update()
|
||||
#include "pycore_sliceobject.h" // _PyBuildSlice_ConsumeRefs
|
||||
#include "pycore_traceback.h" // _PyTraceBack_FromFrame
|
||||
#include "pycore_tuple.h" // _PyTuple_ITEMS()
|
||||
#include "pycore_uop_ids.h" // Uops
|
||||
#include "pycore_pyerrors.h"
|
||||
|
@ -2074,8 +2075,8 @@ raise_error:
|
|||
*/
|
||||
|
||||
int
|
||||
_PyEval_ExceptionGroupMatch(PyObject* exc_value, PyObject *match_type,
|
||||
PyObject **match, PyObject **rest)
|
||||
_PyEval_ExceptionGroupMatch(_PyInterpreterFrame *frame, PyObject* exc_value,
|
||||
PyObject *match_type, PyObject **match, PyObject **rest)
|
||||
{
|
||||
if (Py_IsNone(exc_value)) {
|
||||
*match = Py_NewRef(Py_None);
|
||||
|
@ -2101,6 +2102,15 @@ _PyEval_ExceptionGroupMatch(PyObject* exc_value, PyObject *match_type,
|
|||
if (wrapped == NULL) {
|
||||
return -1;
|
||||
}
|
||||
PyFrameObject *f = _PyFrame_GetFrameObject(frame);
|
||||
if (f != NULL) {
|
||||
PyObject *tb = _PyTraceBack_FromFrame(NULL, f);
|
||||
if (tb == NULL) {
|
||||
return -1;
|
||||
}
|
||||
PyException_SetTraceback(wrapped, tb);
|
||||
Py_DECREF(tb);
|
||||
}
|
||||
*match = wrapped;
|
||||
}
|
||||
*rest = Py_NewRef(Py_None);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue