Fix bug 683658 - PyErr_Warn may cause import deadlock.

This commit is contained in:
Mark Hammond 2003-02-19 00:33:33 +00:00
parent 4ccf3e14f0
commit a43fd0c899
3 changed files with 19 additions and 6 deletions

View file

@ -60,6 +60,11 @@ int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */
true divisions (which they will be in 2.3). */
int _Py_QnewFlag = 0;
/* Reference to 'warnings' module, to avoid importing it
on the fly when the import lock may be held. See 683658
*/
PyObject *PyModule_WarningsModule = NULL;
static int initialized = 0;
/* API to access the initialized flag -- useful for esoteric use */
@ -169,6 +174,8 @@ Py_Initialize(void)
_PyImportHooks_Init();
PyModule_WarningsModule = PyImport_ImportModule("warnings");
initsigs(); /* Signal handling stuff, including initintr() */
initmain(); /* Module __main__ */
@ -225,6 +232,10 @@ Py_Finalize(void)
/* Cleanup Codec registry */
_PyCodecRegistry_Fini();
/* drop module references we saved */
Py_XDECREF(PyModule_WarningsModule);
PyModule_WarningsModule = NULL;
/* Destroy all modules */
PyImport_Cleanup();