summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/exceptions.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-08-23 22:22:52 +0000
committerChristopher Faylor <me@cgf.cx>2005-08-23 22:22:52 +0000
commitdb7f135b03afa5f8ee870f87d1727d69dade30ce (patch)
tree17ec52d3aad780d64dac155f9b1a338237f3bb79 /winsup/cygwin/exceptions.cc
parent3e4aef50dc96d628dc637693c2546c06e4771be8 (diff)
downloadcygnal-db7f135b03afa5f8ee870f87d1727d69dade30ce.tar.gz
cygnal-db7f135b03afa5f8ee870f87d1727d69dade30ce.tar.bz2
cygnal-db7f135b03afa5f8ee870f87d1727d69dade30ce.zip
* sigproc.h (set_signal_mask): Remove default on second parameter and make pass
by reference. * signal.cc (abort): Accommodate change to set_signal_mask. * select.cc (pselect): Ditto. * exceptions.cc (handle_sigsuspend): Ditto. (ctrl_c_handler): Ditto. (sighold): Ditto. (sigrelse): Ditto. (set_process_mask_delta): Ditto. (_cygtls::call_signal_handler): Ditto. * fhandler_disk_file.cc (fhandler_disk_file::readdir): Return ENMFILE if __handle is not set. Set __handle to NULL when out of files. (fhandler_disk_file::rewinddir): Don't close handle if it's NULL. (fhandler_disk_file::closedir): Ditto.
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r--winsup/cygwin/exceptions.cc14
1 files changed, 7 insertions, 7 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 1d3d8def7..9ae77f8d2 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -592,7 +592,7 @@ handle_sigsuspend (sigset_t tempmask)
{
sigset_t oldmask = myself->getsigmask (); // Remember for restoration
- set_signal_mask (tempmask, oldmask);
+ set_signal_mask (tempmask, myself->getsigmask ());
sigproc_printf ("oldmask %p, newmask %p", oldmask, tempmask);
pthread_testcancel ();
@@ -910,7 +910,7 @@ ctrl_c_handler (DWORD type)
extern "C" void __stdcall
set_process_mask (sigset_t newmask)
{
- set_signal_mask (newmask);
+ set_signal_mask (newmask, myself->getsigmask ());
}
extern "C" int
@@ -926,7 +926,7 @@ sighold (int sig)
mask_sync.acquire (INFINITE);
sigset_t mask = myself->getsigmask ();
sigaddset (&mask, sig);
- set_signal_mask (mask);
+ set_signal_mask (mask, myself->getsigmask ());
mask_sync.release ();
return 0;
}
@@ -944,7 +944,7 @@ sigrelse (int sig)
mask_sync.acquire (INFINITE);
sigset_t mask = myself->getsigmask ();
sigdelset (&mask, sig);
- set_signal_mask (mask);
+ set_signal_mask (mask, myself->getsigmask ());
mask_sync.release ();
return 0;
}
@@ -973,14 +973,14 @@ set_process_mask_delta ()
/* Set the signal mask for this process.
Note that some signals are unmaskable, as in UNIX. */
extern "C" void __stdcall
-set_signal_mask (sigset_t newmask, sigset_t oldmask)
+set_signal_mask (sigset_t newmask, sigset_t& oldmask)
{
mask_sync.acquire (INFINITE);
newmask &= ~SIG_NONMASKABLE;
sigset_t mask_bits = oldmask & ~newmask;
sigproc_printf ("oldmask %p, newmask %p, mask_bits %p", oldmask, newmask,
mask_bits);
- myself->setsigmask (newmask); // Set a new mask
+ oldmask = newmask;
if (mask_bits)
sig_dispatch_pending (true);
else
@@ -1225,7 +1225,7 @@ _cygtls::call_signal_handler ()
sig = 0;
sigfunc (thissig);
incyg++;
- set_signal_mask (this_oldmask);
+ set_signal_mask (this_oldmask, myself->getsigmask ());
if (this_errno >= 0)
set_errno (this_errno);
}