From: Barry Warsaw Date: Fri, 23 Feb 2001 16:46:39 +0000 (+0000) Subject: Py_Main(): When compiled by Insure (i.e. __INSURE__ is defined), call X-Git-Tag: v2.1b1~216 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3e13b1e48bdd0550929f55bac11571116cd655ab;p=thirdparty%2FPython%2Fcpython.git Py_Main(): When compiled by Insure (i.e. __INSURE__ is defined), call the internal API function to release the interned strings as the very last thing before returning status. This aids in memory use debugging because it eliminates a huge source of noise from the reports. This is never called during normal (non-debugging) use because releasing the interned strings slows Python's shutdown and isn't necessary anyway because the system will always reclaim the memory. --- diff --git a/Modules/main.c b/Modules/main.c index 49dc4aa32ee7..bef2574e0aeb 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -301,6 +301,20 @@ Py_Main(int argc, char **argv) sts = PyRun_AnyFile(stdin, "") != 0; Py_Finalize(); + +#ifdef __INSURE__ + /* Insure++ is a memory analysis tool that aids in discovering + * memory leaks and other memory problems. On Python exit, the + * interned string dictionary is flagged as being in use at exit + * (which it is). Under normal circumstances, this is fine because + * the memory will be automatically reclaimed by the system. Under + * memory debugging, it's a huge source of useless noise, so we + * trade off slower shutdown for less distraction in the memory + * reports. -baw + */ + _Py_ReleaseInternedStrings(); +#endif /* __INSURE__ */ + return sts; }