mirror of
https://github.com/python/cpython.git
synced 2025-08-26 11:45:20 +00:00
coroutines: Error when awaiting on coroutine that's being awaited
Issue #25888
This commit is contained in:
parent
e076ffb068
commit
c724bae51c
4 changed files with 40 additions and 6 deletions
|
@ -2021,6 +2021,21 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
|
|||
|
||||
Py_DECREF(iterable);
|
||||
|
||||
if (iter != NULL && PyCoro_CheckExact(iter)) {
|
||||
PyObject *yf = _PyGen_yf((PyGenObject*)iter);
|
||||
if (yf != NULL) {
|
||||
/* `iter` is a coroutine object that is being
|
||||
awaited, `yf` is a pointer to the current awaitable
|
||||
being awaited on. */
|
||||
Py_DECREF(yf);
|
||||
Py_CLEAR(iter);
|
||||
PyErr_SetString(
|
||||
PyExc_RuntimeError,
|
||||
"coroutine is being awaited already");
|
||||
/* The code below jumps to `error` if `iter` is NULL. */
|
||||
}
|
||||
}
|
||||
|
||||
SET_TOP(iter); /* Even if it's NULL */
|
||||
|
||||
if (iter == NULL) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue