* exceptions.cc (ctrl_c_handler): Always send signal to process if it has no
tty.
This commit is contained in:
@@ -473,7 +473,7 @@ proc_terminate (void)
|
||||
void __stdcall
|
||||
sig_clear (int sig)
|
||||
{
|
||||
(void) InterlockedExchange (myself->getsigtodo (sig), 0L);
|
||||
(void) ilockexch (myself->getsigtodo (sig), 0L);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -696,7 +696,7 @@ sig_send (_pinfo *p, int sig, DWORD ebp, bool exception)
|
||||
|
||||
/* Increment the sigtodo array to signify which signal to assert.
|
||||
*/
|
||||
(void) InterlockedIncrement (p->getsigtodo (sig));
|
||||
(void) ilockincr (p->getsigtodo (sig));
|
||||
|
||||
/* Notify the process that a signal has arrived.
|
||||
*/
|
||||
@@ -783,7 +783,7 @@ out:
|
||||
void __stdcall
|
||||
sig_set_pending (int sig)
|
||||
{
|
||||
(void) InterlockedIncrement (myself->getsigtodo (sig));
|
||||
(void) ilockincr (myself->getsigtodo (sig));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1137,7 +1137,7 @@ wait_sig (VOID *)
|
||||
int dispatched_sigchld = 0;
|
||||
for (int sig = -__SIGOFFSET; sig < NSIG; sig++)
|
||||
{
|
||||
while (InterlockedDecrement (myself->getsigtodo (sig)) >= 0)
|
||||
while (ilockdecr (myself->getsigtodo (sig)) >= 0)
|
||||
{
|
||||
if (sig == SIGCHLD)
|
||||
saw_sigchld = 1;
|
||||
@@ -1171,14 +1171,14 @@ wait_sig (VOID *)
|
||||
dispatched_sigchld = 1;
|
||||
/* Need to decrement again to offset increment below since
|
||||
we really do want to decrement in this case. */
|
||||
InterlockedDecrement (myself->getsigtodo (sig));
|
||||
ilockdecr (myself->getsigtodo (sig));
|
||||
goto nextsig; /* FIXME: shouldn't this allow the loop to continue? */
|
||||
}
|
||||
}
|
||||
|
||||
nextsig:
|
||||
/* Decremented too far. */
|
||||
if (InterlockedIncrement (myself->getsigtodo (sig)) > 0)
|
||||
if (ilockincr (myself->getsigtodo (sig)) > 0)
|
||||
saw_pending_signals = 1;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user