bpo-36356: pymain_free() calls _PyRuntime_Finalize() (GH-12436)
Ensure that _PyRuntime_Finalize() is always call. This change fix a
few memory leaks when running "python3 -V".
diff --git a/Include/internal/pystate.h b/Include/internal/pystate.h
index 721d34f..5891339 100644
--- a/Include/internal/pystate.h
+++ b/Include/internal/pystate.h
@@ -118,6 +118,9 @@
Return NULL on success, or return an error message on failure. */
PyAPI_FUNC(_PyInitError) _PyRuntime_Initialize(void);
+PyAPI_FUNC(void) _PyRuntime_Finalize(void);
+
+
#define _Py_CURRENTLY_FINALIZING(tstate) \
(_PyRuntime.finalizing == tstate)
diff --git a/Modules/main.c b/Modules/main.c
index a745381..f946894 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -660,6 +660,8 @@
orig_argc = 0;
orig_argv = NULL;
+ _PyRuntime_Finalize();
+
PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
}