diff options
author | Guido van Rossum <guido@python.org> | 1997-11-03 21:53:55 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1997-11-03 21:53:55 (GMT) |
commit | 7ff20ac9c7519f3ecef33331f6222304fe1772f1 (patch) | |
tree | 442c3d944461f35e7b92380269752f17e81f853d /Modules | |
parent | 615022fbf844ba5bbab1482b2e36e0ab8f452869 (diff) | |
download | cpython-7ff20ac9c7519f3ecef33331f6222304fe1772f1.zip cpython-7ff20ac9c7519f3ecef33331f6222304fe1772f1.tar.gz cpython-7ff20ac9c7519f3ecef33331f6222304fe1772f1.tar.bz2 |
Change the signal finialization so that it also resets the signal
handlers. After this has been called, our signal handlers are no
longer active!
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/signalmodule.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c index 2b4e5c3..e815492 100644 --- a/Modules/signalmodule.c +++ b/Modules/signalmodule.c @@ -513,13 +513,19 @@ static void finisignal() { int i; + PyObject *func; signal(SIGINT, old_siginthandler); + old_siginthandler = SIG_DFL; for (i = 1; i < NSIG; i++) { + func = Handlers[i].func; Handlers[i].tripped = 0; - Py_XDECREF(Handlers[i].func); Handlers[i].func = NULL; + if (i != SIGINT && func != NULL && func != Py_None && + func != DefaultHandler && func != IgnoreHandler) + signal(i, SIG_DFL); + Py_XDECREF(func); } Py_XDECREF(IntHandler); |