Issue #19972: Add rarely used freefunc.  This fixes a leak if sys.exit()
is used in a program.
diff --git a/Modules/_pickle.c b/Modules/_pickle.c
index d61c8ab..c52f945 100644
--- a/Modules/_pickle.c
+++ b/Modules/_pickle.c
@@ -7464,6 +7464,12 @@
     return 0;
 }
 
+static void
+pickle_free(PyObject *m)
+{
+    _Pickle_ClearState(_Pickle_GetState(m));
+}
+
 static int
 pickle_traverse(PyObject *m, visitproc visit, void *arg)
 {
@@ -7485,14 +7491,14 @@
 
 static struct PyModuleDef _picklemodule = {
     PyModuleDef_HEAD_INIT,
-    "_pickle",           /* m_name */
-    pickle_module_doc,   /* m_doc */
-    sizeof(PickleState), /* m_size */
-    pickle_methods,      /* m_methods */
-    NULL,                /* m_reload */
-    pickle_traverse,     /* m_traverse */
-    pickle_clear,        /* m_clear */
-    NULL                 /* m_free */
+    "_pickle",            /* m_name */
+    pickle_module_doc,    /* m_doc */
+    sizeof(PickleState),  /* m_size */
+    pickle_methods,       /* m_methods */
+    NULL,                 /* m_reload */
+    pickle_traverse,      /* m_traverse */
+    pickle_clear,         /* m_clear */
+    (freefunc)pickle_free /* m_free */
 };
 
 PyMODINIT_FUNC