8000 [2.7] bpo-30057: Fix potential missed signal in signal.signal(). (GH-… · python/cpython@c713837 · GitHub
[go: up one dir, main page]

Skip to content

Commit c713837

Browse files
authored
[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 f6f90ff)
1 parent b694770 commit c713837

File tree

3 files changed

+6
-1
lines changed

3 files changed

+6
-1
lines changed

Misc/ACKS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ Vincent Delft
324324
Arnaud Delobelle
325325
Konrad Delong
326326
Erik Demaine
327+
Jeroen Demeyer
327328
Martin Dengler
328329
John Dennis
329330
L. Peter Deutsch
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix potential missed signal in signal.signal().

Modules/signalmodule.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,12 +317,15 @@ signal_signal(PyObject *self, PyObject *args)
317317
}
318318
else
319319
func = signal_handler;
320+
/* Check for pending signals before changing signal handler */
321+
if (PyErr_CheckSignals()) {
322+
return NULL;
323+
}
320324
if (PyOS_setsig(sig_num, func) == SIG_ERR) {
321325
PyErr_SetFromErrno(PyExc_RuntimeError);
322326
return NULL;
323327
}
324328
old_handler = Handlers[sig_num].func;
325-
Handlers[sig_num].tripped = 0;
326329
Py_INCREF(obj);
327330
Handlers[sig_num].func = obj;
328331
if (old_handler != NULL)

0 commit comments

Comments
 (0)
0