[Python-checkins] CVS: python/dist/src/Modules gcmodule.c,2.25,2.26
Neil Schemenauer
nascheme@users.sourceforge.net
Wed, 31 Oct 2001 15:09:37 -0800
Update of /cvsroot/python/python/dist/src/Modules
In directory usw-pr-cvs1:/tmp/cvs-serv29400
Modified Files:
gcmodule.c
Log Message:
Make the gc.collect() function respect the collection lock. This fixes
SF bug 476129: "gc.collect sometimes hangs".
Index: gcmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/gcmodule.c,v
retrieving revision 2.25
retrieving revision 2.26
diff -C2 -d -r2.25 -r2.26
*** gcmodule.c 2001/10/12 20:52:48 2.25
--- gcmodule.c 2001/10/31 23:09:35 2.26
***************
*** 549,556 ****
return NULL;
! generation = 2;
! gc_list_merge(&_PyGC_generation0, &generation2);
! gc_list_merge(&generation1, &generation2);
! n = collect(&generation2, &generation2);
return Py_BuildValue("l", n);
--- 549,563 ----
return NULL;
! if (collecting) {
! n = 0; /* already collecting, don't do anything */
! }
! else {
! collecting = 1;
! generation = 2;
! gc_list_merge(&_PyGC_generation0, &generation2);
! gc_list_merge(&generation1, &generation2);
! n = collect(&generation2, &generation2);
! collecting = 0;
! }
return Py_BuildValue("l", n);