diff Python/errors.c @ 29877:72cbc41ccc2f legacy-trunk

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.
author Mark Hammond <mhammond@skippinet.com.au>
date Tue, 15 Jul 2003 23:03:55 +0000
parents 5fbdcaef9dda
children 3b59fa5d25b1
line wrap: on
line diff
--- a/Python/errors.c	Tue Jul 15 22:03:00 2003 +0000
+++ b/Python/errors.c	Tue Jul 15 23:03:55 2003 +0000
@@ -599,16 +599,17 @@
 	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) {