summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2007-01-05 05:28:50 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2007-01-05 05:28:50 (GMT)
commit7770f9f6d260548fbed4059c81a1727dc098e5b5 (patch)
treee08b808bf657a0053f970bea57452d0df49241a2
parent1a050f5f52c88c28f7d00b5728e3ede548c8cb7e (diff)
downloadcpython-7770f9f6d260548fbed4059c81a1727dc098e5b5.zip
cpython-7770f9f6d260548fbed4059c81a1727dc098e5b5.tar.gz
cpython-7770f9f6d260548fbed4059c81a1727dc098e5b5.tar.bz2
Backport:
Prevent crash on shutdown which can occur if we are finalizing and the module dict has been cleared already and some object raises a warning (like in a __del__).
-rw-r--r--Misc/NEWS3
-rw-r--r--Python/errors.c3
2 files changed, 5 insertions, 1 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index bf793a3..76ed61e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 2.5.1c1?
Core and builtins
-----------------
+- Prevent seg fault on shutdown which could occur if an object
+ raised a warning.
+
- Bug #1566280: Explicitly invoke threading._shutdown from Py_Main,
to avoid relying on atexit.
diff --git a/Python/errors.c b/Python/errors.c
index 66a734e..f31f025 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -640,7 +640,8 @@ PyErr_WarnEx(PyObject *category, const char *message, Py_ssize_t stack_level)
if (warnings_module != NULL) {
dict = PyModule_GetDict(warnings_module);
- func = PyDict_GetItemString(dict, "warn");
+ if (dict != NULL)
+ func = PyDict_GetItemString(dict, "warn");
}
if (func == NULL) {
PySys_WriteStderr("warning: %s\n", message);