diff options
author | Neal Norwitz <nnorwitz@gmail.com> | 2007-01-05 05:28:50 (GMT) |
---|---|---|
committer | Neal Norwitz <nnorwitz@gmail.com> | 2007-01-05 05:28:50 (GMT) |
commit | 7770f9f6d260548fbed4059c81a1727dc098e5b5 (patch) | |
tree | e08b808bf657a0053f970bea57452d0df49241a2 | |
parent | 1a050f5f52c88c28f7d00b5728e3ede548c8cb7e (diff) | |
download | cpython-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/NEWS | 3 | ||||
-rw-r--r-- | Python/errors.c | 3 |
2 files changed, 5 insertions, 1 deletions
@@ -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); |