Added finalization routines.
diff --git a/Parser/intrcheck.c b/Parser/intrcheck.c
index 685e066..a2a3145 100644
--- a/Parser/intrcheck.c
+++ b/Parser/intrcheck.c
@@ -49,6 +49,11 @@
 {
 }
 
+void
+PyOS_FiniInterrupts()
+{
+}
+
 int
 PyOS_InterruptOccurred()
 {
@@ -81,6 +86,11 @@
 	_go32_want_ctrl_break(1 /* TRUE */);
 }
 
+void
+PyOS_FiniInterrupts()
+{
+}
+
 int
 PyOS_InterruptOccurred()
 {
@@ -96,6 +106,11 @@
 {
 }
 
+void
+PyOS_FiniInterrupts()
+{
+}
+
 int
 PyOS_InterruptOccurred()
 {
@@ -170,10 +185,12 @@
 	Py_AddPendingCall(PyErr_CheckSignals, NULL);
 }
 
+static RETSIGTYPE (*old_siginthandler)() = SIG_DFL;
+
 void
 PyOS_InitInterrupts()
 {
-	if (signal(SIGINT, SIG_IGN) != SIG_IGN)
+	if ((old_siginthandler = signal(SIGINT, SIG_IGN)) != SIG_IGN)
 		signal(SIGINT, intcatcher);
 #ifdef HAVE_SIGINTERRUPT
 	/* This is for SunOS and other modern BSD derivatives.
@@ -186,6 +203,12 @@
 #endif /* HAVE_SIGINTERRUPT */
 }
 
+void
+PyOS_FiniInterrupts()
+{
+	signal(SIGINT, old_siginthandler);
+}
+
 int
 PyOS_InterruptOccurred()
 {