[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);