]> granicus.if.org Git - python/commitdiff
gen_iternext(): Don't assume that the current thread state's frame is
authorTim Peters <tim.peters@gmail.com>
Sat, 23 Jun 2001 05:47:56 +0000 (05:47 +0000)
committerTim Peters <tim.peters@gmail.com>
Sat, 23 Jun 2001 05:47:56 +0000 (05:47 +0000)
not NULL.  I don't think it can be NULL from Python code, but if using
generators via the C API I expect a NULL frame is possible.

Python/ceval.c

index d6b61d5b42fc122973b5496b0e42077b4380fb4c..d334775fbe36900d684efa81a032010dd8ab0701 100644 (file)
@@ -152,7 +152,7 @@ gen_iternext(genobject *gen)
 
        /* Generators always return to their most recent caller, not
         * necessarily their creator. */
-       Py_INCREF(tstate->frame);
+       Py_XINCREF(tstate->frame);
        assert(f->f_back == NULL);
        f->f_back = tstate->frame;
 
@@ -163,7 +163,7 @@ gen_iternext(genobject *gen)
        /* 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. */
-       Py_DECREF(f->f_back);
+       Py_XDECREF(f->f_back);
        f->f_back = NULL;
 
        return result;