bpo-23395: Fix PyErr_SetInterrupt if the SIGINT signal is ignored or not handled (GH-7778)

``_thread.interrupt_main()`` now avoids setting the Python error status if the ``SIGINT`` signal is ignored or not handled by Python.
This commit is contained in:
Matěj Cepl 2019-05-23 22:30:00 +02:00 committed by Antoine Pitrou
parent b82e17e626
commit 608876b6b1
6 changed files with 59 additions and 13 deletions

View file

@ -1683,13 +1683,18 @@ _PyErr_CheckSignals(void)
}
/* Replacements for intrcheck.c functionality
* Declared in pyerrors.h
*/
/* Simulate the effect of a signal.SIGINT signal arriving. The next time
PyErr_CheckSignals is called, the Python SIGINT signal handler will be
raised.
Missing signal handler for the SIGINT signal is silently ignored. */
void
PyErr_SetInterrupt(void)
{
trip_signal(SIGINT);
if ((Handlers[SIGINT].func != IgnoreHandler) &&
(Handlers[SIGINT].func != DefaultHandler)) {
trip_signal(SIGINT);
}
}
void