summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/sigproc.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/sigproc.cc')
-rw-r--r--winsup/cygwin/sigproc.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc
index 2bb9d4eda..382b226f8 100644
--- a/winsup/cygwin/sigproc.cc
+++ b/winsup/cygwin/sigproc.cc
@@ -1097,9 +1097,10 @@ wait_sig (VOID *self)
else
{
int sig = pack.si.si_signo;
- // FIXME: Not quite right when taking threads into consideration.
- // Do we need a per-thread queue?
- if (sigq.sigs[sig].si.si_signo)
+ // FIXME: REALLY not right when taking threads into consideration.
+ // We need a per-thread queue since each thread can have its own
+ // list of blocked signals. CGF 2005-08-24
+ if (sigq.sigs[sig].si.si_signo && sigq.sigs[sig].tls == pack.tls)
sigproc_printf ("sig %d already queued", pack.si.si_signo);
else
{