summaryrefslogtreecommitdiff
path: root/Python/errors.c
diff options
context:
space:
mode:
authorMark Hammond <mhammond@skippinet.com.au>2003-07-15 23:03:55 +0000
committerMark Hammond <mhammond@skippinet.com.au>2003-07-15 23:03:55 +0000
commit2820ca90b76294703e9dde97d388bae0115d03b9 (patch)
tree23e2acfdc3fc3c74a29924d9b6f4e6f4e950f854 /Python/errors.c
parent464dde3b66a3544ee02fbbf112521c819889ab0c (diff)
downloadcpython-2820ca90b76294703e9dde97d388bae0115d03b9.tar.gz
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.
Diffstat (limited to 'Python/errors.c')
-rw-r--r--Python/errors.c7
1 files changed, 4 insertions, 3 deletions
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) {