Fix a too-aggressive assert (see SF#1257960). Previously, gen_iternext

was never called during interpreter shutdown GC, so the f_back!=NULL
assertion was correct.  Now that generators get close()d during GC,
the assertion was being triggered because the generator close() was being
called as the top-level frame.  However, nothing actually is broken by
this; it's just that the condition was unexpected in previous Python
versions.
This commit is contained in:
Phillip J. Eby 2005-08-13 03:29:00 +00:00
parent 038ca2a551
commit 00148226df
1 changed files with 1 additions and 1 deletions

View File

@ -82,7 +82,7 @@ gen_send_ex(PyGenObject *gen, PyObject *arg, int exc)
/* Don't keep the reference to f_back any longer than necessary. It /* Don't keep the reference to f_back any longer than necessary. It
* may keep a chain of frames alive or it could create a reference * may keep a chain of frames alive or it could create a reference
* cycle. */ * cycle. */
assert(f->f_back != NULL); assert(f->f_back == tstate->frame);
Py_CLEAR(f->f_back); Py_CLEAR(f->f_back);
/* If the generator just returned (as opposed to yielding), signal /* If the generator just returned (as opposed to yielding), signal