Issue #13389: Full garbage collection passes now clear the freelists for
list and dict objects. They already cleared other freelists in the
interpreter.
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index 82735e6..f8f072d 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -217,16 +217,23 @@
static PyDictObject *free_list[PyDict_MAXFREELIST];
static int numfree = 0;
-void
-PyDict_Fini(void)
+int
+PyDict_ClearFreeList(void)
{
PyDictObject *op;
-
+ int ret = numfree;
while (numfree) {
op = free_list[--numfree];
assert(PyDict_CheckExact(op));
PyObject_GC_Del(op);
}
+ return ret;
+}
+
+void
+PyDict_Fini(void)
+{
+ PyDict_ClearFreeList();
}
PyObject *