summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2013-05-04 17:29:36 -0400
committerBrett Cannon <brett@python.org>2013-05-04 17:29:36 -0400
commit4f9b4343ed07bd6908cf7d679fa1d50484831294 (patch)
tree72d8d8dc1653ed12ca7f6b1f1df3ca864eef1548
parent9c1334ef7de0688d71e01ab2d6a6ff60bb12ae87 (diff)
parent52c5f85cf9e591b3c6f8729f58e0807d88f43792 (diff)
downloadcpython-git-4f9b4343ed07bd6908cf7d679fa1d50484831294.tar.gz
merge
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/signalmodule.c14
2 files changed, 14 insertions, 3 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 64b1efcf6a..ab268c80bc 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -69,6 +69,9 @@ Core and Builtins
Library
-------
+- Issue #14173: Avoid crashing when reading a signal handler during
+ interpreter shutdown.
+
- Issue #15902: Fix imp.load_module() accepting None as a file when loading an
extension module.
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index dd55c10b90..122530beed 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -339,7 +339,10 @@ signal_signal(PyObject *self, PyObject *args)
Handlers[sig_num].tripped = 0;
Py_INCREF(obj);
Handlers[sig_num].func = obj;
- return old_handler;
+ if (old_handler != NULL)
+ return old_handler;
+ else
+ Py_RETURN_NONE;
}
PyDoc_STRVAR(signal_doc,
@@ -367,8 +370,13 @@ signal_getsignal(PyObject *self, PyObject *args)
return NULL;
}
old_handler = Handlers[sig_num].func;
- Py_INCREF(old_handler);
- return old_handler;
+ if (old_handler != NULL) {
+ Py_INCREF(old_handler);
+ return old_handler;
+ }
+ else {
+ Py_RETURN_NONE;
+ }
}
PyDoc_STRVAR(getsignal_doc,