Closed
Description
Bug report
Bug description:
take_ownership
clears any MemoryError exceptions when getting the previous frame fails (even if they were not raised by the call to _PyFrame_GetFrameObject):
Lines 74 to 79 in 1e4a434
I think we should save and restore the exception around the call to _PyFrame_GetFrameObject(prev)
. Something like:
PyObject *exc = PyErr_GetRaisedException();
PyFrameObject *back = _PyFrame_GetFrameObject(prev);
if (back == NULL) {
/* Memory error here. */
assert(PyErr_ExceptionMatches(PyExc_MemoryError));
/* Nothing we can do about it */
PyErr_Clear();
}
else {
f->f_back = (PyFrameObject *)Py_NewRef(back);
}
PyErr_SetRaisedException(exc);
CPython versions tested on:
3.14, CPython main branch
Operating systems tested on:
No response