mirror of https://github.com/python/cpython
clear out f_gen during generator finalization (closes #27812)
Patch from Armin Rigo.
This commit is contained in:
parent
80109d3351
commit
bdddb11b0e
|
@ -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)
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue