Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6c7a00f

Browse files
committed
* Factor out PyObject_SelfIter().
* Change a XDECREF to DECREF (adding an assertion just to be sure).
1 parent 0eb32a6 commit 6c7a00f

1 file changed

Lines changed: 3 additions & 9 deletions

File tree

Objects/genobject.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ gen_iternext(PyGenObject *gen)
5050
/* Don't keep the reference to f_back any longer than necessary. It
5151
* may keep a chain of frames alive or it could create a reference
5252
* cycle. */
53-
Py_XDECREF(f->f_back);
53+
assert(f->f_back != NULL);
54+
Py_DECREF(f->f_back);
5455
f->f_back = NULL;
5556

5657
/* If the generator just returned (as opposed to yielding), signal
@@ -63,13 +64,6 @@ gen_iternext(PyGenObject *gen)
6364
return result;
6465
}
6566

66-
static PyObject *
67-
gen_getiter(PyObject *gen)
68-
{
69-
Py_INCREF(gen);
70-
return gen;
71-
}
72-
7367
static PyMemberDef gen_memberlist[] = {
7468
{"gi_frame", T_OBJECT, offsetof(PyGenObject, gi_frame), RO},
7569
{"gi_running", T_INT, offsetof(PyGenObject, gi_running), RO},
@@ -104,7 +98,7 @@ PyTypeObject PyGen_Type = {
10498
0, /* tp_clear */
10599
0, /* tp_richcompare */
106100
offsetof(PyGenObject, gi_weakreflist), /* tp_weaklistoffset */
107-
(getiterfunc)gen_getiter, /* tp_iter */
101+
PyObject_SelfIter, /* tp_iter */
108102
(iternextfunc)gen_iternext, /* tp_iternext */
109103
0, /* tp_methods */
110104
gen_memberlist, /* tp_members */

0 commit comments

Comments
 (0)