* sigproc.cc (wait_sig): Avoid infinite loop.

This commit is contained in:
Christopher Faylor 2003-08-22 01:07:01 +00:00
parent 346c0bf9fc
commit a9f7754462
2 changed files with 7 additions and 3 deletions

View File

@ -1,3 +1,7 @@
2003-08-21 Christopher Faylor <cgf@redhat.com>
* sigproc.cc (wait_sig): Avoid infinite loop.
2003-08-20 Christopher Faylor <cgf@redhat.com> 2003-08-20 Christopher Faylor <cgf@redhat.com>
* speclib: Reenable removal of temp files. * speclib: Reenable removal of temp files.

View File

@ -1166,10 +1166,10 @@ wait_sig (VOID *self)
* array looking for any unprocessed signals. * array looking for any unprocessed signals.
*/ */
pending_signals = false; pending_signals = false;
bool saw_failed_interrupt = false;
bool more_signals = false; bool more_signals = false;
bool saw_failed_interrupt = false;
do do
for (int sig = -__SIGOFFSET; sig < NSIG; sig++) for (int sig = -__SIGOFFSET, more_signals = false; sig < NSIG; sig++)
{ {
LONG x = InterlockedDecrement (todo + sig); LONG x = InterlockedDecrement (todo + sig);
if (x < 0) if (x < 0)
@ -1232,7 +1232,7 @@ wait_sig (VOID *self)
goto out; goto out;
} }
} }
while (more_signals); while (more_signals && !saw_failed_interrupt);
out: out:
/* Signal completion of signal handling depending on which semaphore /* Signal completion of signal handling depending on which semaphore