Deallocate content of the dict free list on interpreter shutdown
diff --git a/Include/pythonrun.h b/Include/pythonrun.h
index cfc40e3..0164088 100644
--- a/Include/pythonrun.h
+++ b/Include/pythonrun.h
@@ -130,6 +130,7 @@
 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);
diff --git a/Misc/NEWS b/Misc/NEWS
index d15531d..af9f364 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 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.
 
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index 82d247f..9e2b944 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -205,6 +205,18 @@
 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)
 {
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index f5465c5..ec31af1 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -473,6 +473,7 @@
 	PyString_Fini();
 	PyInt_Fini();
 	PyFloat_Fini();
+	PyDict_Fini();
 
 #ifdef Py_USING_UNICODE
 	/* Cleanup Unicode implementation */