Commit e8c40cb7 authored by Neil Schemenauer's avatar Neil Schemenauer

Make the gc.collect() function respect the collection lock. This fixes

SF bug 476129: "gc.collect sometimes hangs".
parent 67050d2d
......@@ -548,10 +548,17 @@ gc_collect(PyObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, ":collect")) /* check no args */
return NULL;
generation = 2;
gc_list_merge(&_PyGC_generation0, &generation2);
gc_list_merge(&generation1, &generation2);
n = collect(&generation2, &generation2);
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);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment