summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/exceptions.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2003-09-03 14:15:55 +0000
committerChristopher Faylor <me@cgf.cx>2003-09-03 14:15:55 +0000
commit75119e9980e160d8766111f40353df61abc8159b (patch)
treea4acdc580af9f88230cd8636a906637975e2d0c4 /winsup/cygwin/exceptions.cc
parent73b21148158daab0873ad40309c72b1f3de66fa5 (diff)
downloadcygnal-75119e9980e160d8766111f40353df61abc8159b.tar.gz
cygnal-75119e9980e160d8766111f40353df61abc8159b.tar.bz2
cygnal-75119e9980e160d8766111f40353df61abc8159b.zip
* exceptions.cc (set_process_mask): Set pending signals only when signals
become unmasked. * sigproc.cc (pending_signals): Flip back to a global. (wait_sig): Don't set pending signals when there is an armed semaphore or signal is blocked. * shared.cc (shared_info::initialize): Add a username parameter for user-mode mounts. Reorganize to try to avoid startup race. (memory_init): Move some stuff into shared_info::initialize. * shared_info.h (shared_info::initialize): Change declaration. (CURR_SHARED_MAGIC): Update.
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r--winsup/cygwin/exceptions.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index c63ed2058..feffcd3d2 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -963,11 +963,15 @@ set_process_mask (sigset_t newmask)
sigproc_printf ("old mask = %x, new mask = %x", myself->getsigmask (), newmask);
myself->setsigmask (newmask); // Set a new mask
mask_sync->release ();
- if (oldmask != newmask)
- sig_dispatch_pending ();
- else
+ if (!(oldmask & ~newmask))
sigproc_printf ("not calling sig_dispatch_pending. sigtid %p current %p",
sigtid, GetCurrentThreadId ());
+ else
+ {
+ extern bool pending_signals;
+ pending_signals = true;
+ sig_dispatch_pending ();
+ }
return;
}