From edd07737d70f9021d90f3990fd7f527aa9a54e48 Mon Sep 17 00:00:00 2001 From: Mark Hammond Date: Tue, 15 Jul 2003 23:03:55 +0000 Subject: Fix [ 771097 ] frozen programs fail due to implicit import of "warnings". If the initial import of warnings fails, clear the error. When the module is actually needed, if the original import failed, see if it has managed to find its way to sys.modules yet and if so, remember it. --- Python/errors.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'Python/errors.c') diff --git a/Python/errors.c b/Python/errors.c index d43501bbe7..a40844e7fe 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -599,16 +599,17 @@ PyErr_WriteUnraisable(PyObject *obj) Py_XDECREF(tb); } -extern PyObject *PyModule_WarningsModule; +extern PyObject *PyModule_GetWarningsModule(); /* Function to issue a warning message; may raise an exception. */ int PyErr_Warn(PyObject *category, char *message) { PyObject *dict, *func = NULL; + PyObject *warnings_module = PyModule_GetWarningsModule(); - if (PyModule_WarningsModule != NULL) { - dict = PyModule_GetDict(PyModule_WarningsModule); + if (warnings_module != NULL) { + dict = PyModule_GetDict(warnings_module); func = PyDict_GetItemString(dict, "warn"); } if (func == NULL) { -- cgit v1.2.1