From 025c347d611cb58a2cfc3671615891bd3bc1217a Mon Sep 17 00:00:00 2001 From: Amaury Forgeot d'Arc Date: Thu, 29 Nov 2007 23:35:25 +0000 Subject: Issue #1402: PyInterpreterState_Clear() may still invoke user code (in deallocation of running threads, for example), so the PyGILState_Release() function must still be functional. On the other hand, _PyGILState_Fini() only frees memory, and can be called later. Backport candidate, but only after some experts comment on it. --- Python/pythonrun.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'Python/pythonrun.c') diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 96602ff15b5..adae679057b 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -437,11 +437,6 @@ Py_Finalize(void) _Py_PrintReferences(stderr); #endif /* Py_TRACE_REFS */ - /* Cleanup auto-thread-state */ -#ifdef WITH_THREAD - _PyGILState_Fini(); -#endif /* WITH_THREAD */ - /* Clear interpreter state */ PyInterpreterState_Clear(interp); @@ -453,6 +448,11 @@ Py_Finalize(void) _PyExc_Fini(); + /* Cleanup auto-thread-state */ +#ifdef WITH_THREAD + _PyGILState_Fini(); +#endif /* WITH_THREAD */ + /* Delete current thread */ PyThreadState_Swap(NULL); PyInterpreterState_Delete(interp); -- cgit v1.2.3