From a9f7754462b24b80c88c9c8fb634c28838e46753 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Fri, 22 Aug 2003 01:07:01 +0000 Subject: [PATCH] * sigproc.cc (wait_sig): Avoid infinite loop. --- winsup/cygwin/ChangeLog | 4 ++++ winsup/cygwin/sigproc.cc | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index e1226cf75..e3a3d9791 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +2003-08-21 Christopher Faylor + + * sigproc.cc (wait_sig): Avoid infinite loop. + 2003-08-20 Christopher Faylor * speclib: Reenable removal of temp files. diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index fe1441dcf..02af13a5c 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -1166,10 +1166,10 @@ wait_sig (VOID *self) * array looking for any unprocessed signals. */ pending_signals = false; - bool saw_failed_interrupt = false; bool more_signals = false; + bool saw_failed_interrupt = false; do - for (int sig = -__SIGOFFSET; sig < NSIG; sig++) + for (int sig = -__SIGOFFSET, more_signals = false; sig < NSIG; sig++) { LONG x = InterlockedDecrement (todo + sig); if (x < 0) @@ -1232,7 +1232,7 @@ wait_sig (VOID *self) goto out; } } - while (more_signals); + while (more_signals && !saw_failed_interrupt); out: /* Signal completion of signal handling depending on which semaphore