do not call newmethodobject directly
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 713afbf..4b81889 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -215,6 +215,7 @@
 	{"signal",	PySignal_Signal},
 	{"getsignal",	PySignal_GetSignal},
 	{"pause",	PySignal_Pause},
+	{"default_int_handler", PySignal_CDefaultIntHandler},
 	{NULL,		NULL}		/* sentinel */
 };
 
@@ -240,11 +241,8 @@
 	PySignal_SignalIgnoreHandler = PyInt_FromLong((long)SIG_IGN);
 	PyDict_SetItemString(d, "SIG_IGN", PySignal_SignalIgnoreHandler);
 	PyDict_SetItemString(d, "NSIG", PyInt_FromLong((long)NSIG));
-	PySignal_DefaultIntHandler = PyCFunction_New("default_int_handler",
-						     PySignal_CDefaultIntHandler,
-						     (PyObject *)NULL,
-						     0);
-	PyDict_SetItemString(d, "default_int_handler", PySignal_DefaultIntHandler);
+	PySignal_DefaultIntHandler =
+		PyDict_GetItemString(d, "default_int_handler");
 
 	PySignal_SignalHandlerArray[0].tripped = 0;
 	for (i = 1; i < NSIG; i++) {