diff options
author | Christopher Faylor <me@cgf.cx> | 2003-09-03 14:15:55 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2003-09-03 14:15:55 +0000 |
commit | 75119e9980e160d8766111f40353df61abc8159b (patch) | |
tree | a4acdc580af9f88230cd8636a906637975e2d0c4 /winsup/cygwin/exceptions.cc | |
parent | 73b21148158daab0873ad40309c72b1f3de66fa5 (diff) | |
download | cygnal-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.cc | 10 |
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; } |