summaryrefslogtreecommitdiffstats
path: root/Objects/genobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/genobject.c')
-rw-r--r--Objects/genobject.c32
1 files changed, 2 insertions, 30 deletions
diff --git a/Objects/genobject.c b/Objects/genobject.c
index 7a1e9fd..7bcf016 100644
--- a/Objects/genobject.c
+++ b/Objects/genobject.c
@@ -118,33 +118,6 @@ gen_dealloc(PyGenObject *gen)
PyObject_GC_Del(gen);
}
-static void
-gen_chain_runtime_error(const char *msg)
-{
- PyObject *exc, *val, *val2, *tb;
-
- /* TODO: This about rewriting using _PyErr_ChainExceptions. */
-
- PyErr_Fetch(&exc, &val, &tb);
- PyErr_NormalizeException(&exc, &val, &tb);
- if (tb != NULL) {
- PyException_SetTraceback(val, tb);
- }
-
- Py_DECREF(exc);
- Py_XDECREF(tb);
-
- PyErr_SetString(PyExc_RuntimeError, msg);
- PyErr_Fetch(&exc, &val2, &tb);
- PyErr_NormalizeException(&exc, &val2, &tb);
-
- Py_INCREF(val);
- PyException_SetCause(val2, val);
- PyException_SetContext(val2, val);
-
- PyErr_Restore(exc, val2, tb);
-}
-
static PyObject *
gen_send_ex(PyGenObject *gen, PyObject *arg, int exc, int closing)
{
@@ -276,8 +249,7 @@ gen_send_ex(PyGenObject *gen, PyObject *arg, int exc, int closing)
else if PyAsyncGen_CheckExact(gen) {
msg = "async generator raised StopIteration";
}
- /* Raise a RuntimeError */
- gen_chain_runtime_error(msg);
+ _PyErr_FormatFromCause(PyExc_RuntimeError, "%s", msg);
}
else {
/* `gen` is an ordinary generator without
@@ -309,7 +281,7 @@ gen_send_ex(PyGenObject *gen, PyObject *arg, int exc, int closing)
raise a RuntimeError.
*/
const char *msg = "async generator raised StopAsyncIteration";
- gen_chain_runtime_error(msg);
+ _PyErr_FormatFromCause(PyExc_RuntimeError, "%s", msg);
}
if (!result || f->f_stacktop == NULL) {