PyAPI_FUNC(void) PyMethod_Fini(void);
PyAPI_FUNC(void) PyFrame_Fini(void);
PyAPI_FUNC(void) PyCFunction_Fini(void);
+PyAPI_FUNC(void) PyDict_Fini(void);
PyAPI_FUNC(void) PyTuple_Fini(void);
PyAPI_FUNC(void) PyList_Fini(void);
PyAPI_FUNC(void) PySet_Fini(void);
Core and builtins
-----------------
+- Fixed a minor memory leak in dictobject.c. The content of the free
+ list was not freed on interpreter shutdown.
+
- Limit free list of method and builtin function objects to 256 entries
each.
static PyDictObject *free_list[PyDict_MAXFREELIST];
static int numfree = 0;
+void
+PyDict_Fini(void)
+{
+ PyListObject *op;
+
+ while (numfree) {
+ op = free_list[numfree--];
+ assert(PyDict_CheckExact(op));
+ PyObject_GC_Del(op);
+ }
+}
+
PyObject *
PyDict_New(void)
{
PyString_Fini();
PyInt_Fini();
PyFloat_Fini();
+ PyDict_Fini();
#ifdef Py_USING_UNICODE
/* Cleanup Unicode implementation */