[Python-checkins] python/dist/src/Python ceval.c,2.322,2.323
fdrake@users.sourceforge.net
fdrake@users.sourceforge.net
2002年8月09日 11:35:54 -0700
Update of /cvsroot/python/python/dist/src/Python
In directory usw-pr-cvs1:/tmp/cvs-serv18447
Modified Files:
ceval.c
Log Message:
Add weakref support generator-iterators.
Part of fixing SF bug #591704.
Index: ceval.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/ceval.c,v
retrieving revision 2.322
retrieving revision 2.323
diff -C2 -d -r2.322 -r2.323
*** ceval.c 6 Aug 2002 17:47:40 -0000 2.322
--- ceval.c 9 Aug 2002 18:35:52 -0000 2.323
***************
*** 95,98 ****
--- 95,101 ----
/* True if generator is being executed. */
int gi_running;
+
+ /* List of weak reference. */
+ PyObject *gi_weakreflist;
} genobject;
***************
*** 107,110 ****
--- 110,114 ----
gen->gi_frame = f;
gen->gi_running = 0;
+ gen->gi_weakreflist = NULL;
_PyObject_GC_TRACK(gen);
return (PyObject *)gen;
***************
*** 121,124 ****
--- 125,130 ----
{
_PyObject_GC_UNTRACK(gen);
+ if (gen->gi_weakreflist != NULL)
+ PyObject_ClearWeakRefs((PyObject *) gen);
Py_DECREF(gen->gi_frame);
PyObject_GC_Del(gen);
***************
*** 206,210 ****
0, /* tp_clear */
0, /* tp_richcompare */
! 0, /* tp_weaklistoffset */
(getiterfunc)gen_getiter, /* tp_iter */
(iternextfunc)gen_iternext, /* tp_iternext */
--- 212,216 ----
0, /* tp_clear */
0, /* tp_richcompare */
! offsetof(genobject, gi_weakreflist), /* tp_weaklistoffset */
(getiterfunc)gen_getiter, /* tp_iter */
(iternextfunc)gen_iternext, /* tp_iternext */