[2.7] bpo-30057: Fix potential missed signal in signal.signal(). (GH-4258) (#4263)

Bug report and patch by Jeroen Demeyer..
(cherry picked from commit f6f90ff079a22b79a58d47b6117cc8a8c7d366f3)
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index c7bf1f0..ef70d10 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -317,12 +317,15 @@
     }
     else
         func = signal_handler;
+    /* Check for pending signals before changing signal handler */
+    if (PyErr_CheckSignals()) {
+        return NULL;
+    }
     if (PyOS_setsig(sig_num, func) == SIG_ERR) {
         PyErr_SetFromErrno(PyExc_RuntimeError);
         return NULL;
     }
     old_handler = Handlers[sig_num].func;
-    Handlers[sig_num].tripped = 0;
     Py_INCREF(obj);
     Handlers[sig_num].func = obj;
     if (old_handler != NULL)