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.
This commit is contained in:
Barry Warsaw 2001-02-23 16:46:39 +00:00
parent a903ad9855
commit 3e13b1e48b

View file

@ -301,6 +301,20 @@ Py_Main(int argc, char **argv)
sts = PyRun_AnyFile(stdin, "<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;
}