]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix a too-aggressive assert (see SF#1257960). Previously, gen_iternext
authorPhillip J. Eby <pje@telecommunity.com>
Sat, 13 Aug 2005 03:29:00 +0000 (03:29 +0000)
committerPhillip J. Eby <pje@telecommunity.com>
Sat, 13 Aug 2005 03:29:00 +0000 (03:29 +0000)
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.

Objects/genobject.c

index d281274b0fe477d2f4e88faa8c4589c44ad1321d..b001b0116f8174f5a63d25ca08e888cf96fbb7ec 100644 (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
         * 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