]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Py_Main(): When compiled by Insure (i.e. __INSURE__ is defined), call
authorBarry Warsaw <barry@python.org>
Fri, 23 Feb 2001 16:46:39 +0000 (16:46 +0000)
committerBarry Warsaw <barry@python.org>
Fri, 23 Feb 2001 16:46:39 +0000 (16:46 +0000)
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

index 49dc4aa32ee76e14613c83371e1d4e7348c195f7..bef2574e0aeb2d271c787d7b32bba52426f50bc8 100644 (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;
 }