From: Phillip J. Eby Date: Sat, 13 Aug 2005 03:29:00 +0000 (+0000) Subject: Fix a too-aggressive assert (see SF#1257960). Previously, gen_iternext X-Git-Tag: v2.5a0~1520 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=00148226df1af0f6ef120492c07fb5a8013087fc;p=thirdparty%2FPython%2Fcpython.git 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. --- diff --git a/Objects/genobject.c b/Objects/genobject.c index d281274b0fe4..b001b0116f81 100644 --- a/Objects/genobject.c +++ b/Objects/genobject.c @@ -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 * may keep a chain of frames alive or it could create a reference * cycle. */ - assert(f->f_back != NULL); + assert(f->f_back == tstate->frame); Py_CLEAR(f->f_back); /* If the generator just returned (as opposed to yielding), signal