- #119862 - getargs.c - patched memory leak

- #128475 - pythonrun.c - In Py_Finalize, don't reset initialized flag
            until after the exit funcs have run
This commit is contained in:
Moshe Zadka
2001-03-31 13:18:35 +00:00
parent d0851885c6
commit 175a46d18f
3 changed files with 16 additions and 1 deletions

View File

@@ -183,9 +183,18 @@ Py_Finalize(void)
if (!initialized)
return;
initialized = 0;
/* The interpreter is still entirely intact at this point, and the
* exit funcs may be relying on that. In particular, if some thread
* or exit func is still waiting to do an import, the import machinery
* expects Py_IsInitialized() to return true. So don't say the
* interpreter is uninitialized until after the exit funcs have run.
* Note that Threading.py uses an exit func to do a join on all the
* threads created thru it, so this also protects pending imports in
* the threads created via Threading.
*/
call_sys_exitfunc();
initialized = 0;
/* Get current thread state and interpreter pointer */
tstate = PyThreadState_Get();