[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 */

AltStyle によって変換されたページ (->オリジナル) /