Commit bdddb11b authored by Benjamin Peterson's avatar Benjamin Peterson

clear out f_gen during generator finalization (closes #27812)

Patch from Armin Rigo.
parent 80109d33
...@@ -10,6 +10,9 @@ Release date: TBA ...@@ -10,6 +10,9 @@ Release date: TBA
Core and Builtins Core and Builtins
----------------- -----------------
- Issue #27812: Properly clear out a generator's frame's backreference to the
generator to prevent crashes in frame.clear().
- Issue #27811: Fix a crash when a coroutine that has not been awaited is - Issue #27811: Fix a crash when a coroutine that has not been awaited is
finalized with warnings-as-errors enabled. finalized with warnings-as-errors enabled.
......
...@@ -71,7 +71,10 @@ gen_dealloc(PyGenObject *gen) ...@@ -71,7 +71,10 @@ gen_dealloc(PyGenObject *gen)
return; /* resurrected. :( */ return; /* resurrected. :( */
_PyObject_GC_UNTRACK(self); _PyObject_GC_UNTRACK(self);
Py_CLEAR(gen->gi_frame); if (gen->gi_frame != NULL) {
gen->gi_frame->f_gen = NULL;
Py_CLEAR(gen->gi_frame);
}
Py_CLEAR(gen->gi_code); Py_CLEAR(gen->gi_code);
Py_CLEAR(gen->gi_name); Py_CLEAR(gen->gi_name);
Py_CLEAR(gen->gi_qualname); Py_CLEAR(gen->gi_qualname);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment