From: Victor Stinner Date: Tue, 19 Mar 2019 14:08:17 +0000 (+0100) Subject: bpo-36356: pymain_free() calls _PyRuntime_Finalize() (GH-12436) X-Git-Tag: v3.7.4rc1~326 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=935250d6f3ac7ba91e1ea8e6ca63aaf7f605e291;p=thirdparty%2FPython%2Fcpython.git 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 721d34fa4c19..5891339b5434 100644 --- a/Include/internal/pystate.h +++ b/Include/internal/pystate.h @@ -118,6 +118,9 @@ PyAPI_FUNC(void) _PyRuntimeState_Fini(_PyRuntimeState *); 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 a745381109d3..f94689496a38 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -660,6 +660,8 @@ pymain_free_raw(_PyMain *pymain) orig_argc = 0; orig_argv = NULL; + _PyRuntime_Finalize(); + PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc); }