mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
[3.10] bpo-46009: Do not exhaust generator when send() method raises (GH-29986). (GH-29988)
* [3.10] bpo-46009: Do not exhaust generator when send() method raises (GH-29986).
(cherry picked from commit 69806b9516
)
Co-authored-by: Mark Shannon <mark@hotpy.org>
* Rename variable after cherry-pick.
* Add NULL check.
This commit is contained in:
parent
cca3004f64
commit
99c72326d2
5 changed files with 30 additions and 21 deletions
|
@ -2649,25 +2649,9 @@ main_loop:
|
|||
|
||||
case TARGET(GEN_START): {
|
||||
PyObject *none = POP();
|
||||
assert(none == Py_None);
|
||||
assert(oparg < 3);
|
||||
Py_DECREF(none);
|
||||
if (!Py_IsNone(none)) {
|
||||
if (oparg > 2) {
|
||||
_PyErr_SetString(tstate, PyExc_SystemError,
|
||||
"Illegal kind for GEN_START");
|
||||
}
|
||||
else {
|
||||
static const char *gen_kind[3] = {
|
||||
"generator",
|
||||
"coroutine",
|
||||
"async generator"
|
||||
};
|
||||
_PyErr_Format(tstate, PyExc_TypeError,
|
||||
"can't send non-None value to a "
|
||||
"just-started %s",
|
||||
gen_kind[oparg]);
|
||||
}
|
||||
goto error;
|
||||
}
|
||||
DISPATCH();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue