Change the signal finialization so that it also resets the signal
handlers. After this has been called, our signal handlers are no
longer active!
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 @@
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);