Kaydet (Commit) fd417cc5 authored tarafından Antoine Pitrou's avatar Antoine Pitrou

Fix crash caused by 8c1385205a35

(thanks Arfrever for reporting).
üst dea2ec4b
...@@ -558,6 +558,9 @@ Py_Finalize(void) ...@@ -558,6 +558,9 @@ Py_Finalize(void)
/* Destroy the database used by _PyImport_{Fixup,Find}Extension */ /* Destroy the database used by _PyImport_{Fixup,Find}Extension */
_PyImport_Fini(); _PyImport_Fini();
/* Cleanup typeobject.c's internal caches. */
_PyType_Fini();
/* unload faulthandler module */ /* unload faulthandler module */
_PyFaulthandler_Fini(); _PyFaulthandler_Fini();
...@@ -578,7 +581,7 @@ Py_Finalize(void) ...@@ -578,7 +581,7 @@ Py_Finalize(void)
_Py_PrintReferences(stderr); _Py_PrintReferences(stderr);
#endif /* Py_TRACE_REFS */ #endif /* Py_TRACE_REFS */
/* Clear interpreter state */ /* Clear interpreter state and all thread states. */
PyInterpreterState_Clear(interp); PyInterpreterState_Clear(interp);
/* Now we decref the exception classes. After this point nothing /* Now we decref the exception classes. After this point nothing
...@@ -594,10 +597,6 @@ Py_Finalize(void) ...@@ -594,10 +597,6 @@ Py_Finalize(void)
_PyGILState_Fini(); _PyGILState_Fini();
#endif /* WITH_THREAD */ #endif /* WITH_THREAD */
/* Delete current thread */
PyThreadState_Swap(NULL);
PyInterpreterState_Delete(interp);
/* Sundry finalizers */ /* Sundry finalizers */
PyMethod_Fini(); PyMethod_Fini();
PyFrame_Fini(); PyFrame_Fini();
...@@ -611,11 +610,14 @@ Py_Finalize(void) ...@@ -611,11 +610,14 @@ Py_Finalize(void)
PyFloat_Fini(); PyFloat_Fini();
PyDict_Fini(); PyDict_Fini();
PySlice_Fini(); PySlice_Fini();
_PyType_Fini();
/* Cleanup Unicode implementation */ /* Cleanup Unicode implementation */
_PyUnicode_Fini(); _PyUnicode_Fini();
/* Delete current thread. After this, many C API calls become crashy. */
PyThreadState_Swap(NULL);
PyInterpreterState_Delete(interp);
/* reset file system default encoding */ /* reset file system default encoding */
if (!Py_HasFileSystemDefaultEncoding && Py_FileSystemDefaultEncoding) { if (!Py_HasFileSystemDefaultEncoding && Py_FileSystemDefaultEncoding) {
free((char*)Py_FileSystemDefaultEncoding); free((char*)Py_FileSystemDefaultEncoding);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment