From 3e13b1e48bdd0550929f55bac11571116cd655ab Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Fri, 23 Feb 2001 16:46:39 +0000 Subject: 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. --- Modules/main.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Modules/main.c b/Modules/main.c index 49dc4aa..bef2574 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; } -- cgit v0.12