]> granicus.if.org Git - python/commitdiff
* Factor out PyObject_SelfIter().
authorRaymond Hettinger <python@rcn.com>
Sat, 12 Jun 2004 05:17:55 +0000 (05:17 +0000)
committerRaymond Hettinger <python@rcn.com>
Sat, 12 Jun 2004 05:17:55 +0000 (05:17 +0000)
* Change a XDECREF to DECREF (adding an assertion just to be sure).

Objects/genobject.c

index 0f7373a434ecb27372510bbf03bcf6e240da5365..a604bcbccddfb326e1947a05a6e056e2aca22166 100644 (file)
@@ -50,7 +50,8 @@ gen_iternext(PyGenObject *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_XDECREF(f->f_back);
+       assert(f->f_back != NULL);
+       Py_DECREF(f->f_back);
        f->f_back = NULL;
 
        /* If the generator just returned (as opposed to yielding), signal
@@ -63,13 +64,6 @@ gen_iternext(PyGenObject *gen)
        return result;
 }
 
-static PyObject *
-gen_getiter(PyObject *gen)
-{
-       Py_INCREF(gen);
-       return gen;
-}
-
 static PyMemberDef gen_memberlist[] = {
        {"gi_frame",    T_OBJECT, offsetof(PyGenObject, gi_frame),      RO},
        {"gi_running",  T_INT,    offsetof(PyGenObject, gi_running),    RO},
@@ -104,7 +98,7 @@ PyTypeObject PyGen_Type = {
        0,                                      /* tp_clear */
        0,                                      /* tp_richcompare */
        offsetof(PyGenObject, gi_weakreflist),  /* tp_weaklistoffset */
-       (getiterfunc)gen_getiter,               /* tp_iter */
+       PyObject_SelfIter,                      /* tp_iter */
        (iternextfunc)gen_iternext,             /* tp_iternext */
        0,                                      /* tp_methods */
        gen_memberlist,                         /* tp_members */