aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/exceptions.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2002-08-16 19:07:28 +0000
committerChristopher Faylor <me@cgf.cx>2002-08-16 19:07:28 +0000
commit775275aac7f96c2fdccbefde960afd7eda079a7a (patch)
tree2b033b5f4105e73353d200f8b0a98230e1a94ca7 /winsup/cygwin/exceptions.cc
parenta54ad580fc13fd76020c6042cea1a7884e87a946 (diff)
downloadnewlib-775275aac7f96c2fdccbefde960afd7eda079a7a.zip
newlib-775275aac7f96c2fdccbefde960afd7eda079a7a.tar.gz
newlib-775275aac7f96c2fdccbefde960afd7eda079a7a.tar.bz2
* exceptions.cc (interrupt_setup): Ensure that the previous signal mask is
properly saved.
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r--winsup/cygwin/exceptions.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 9e2e631..914e442 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -686,7 +686,8 @@ interrupt_setup (int sig, void *handler, DWORD retaddr, DWORD *retaddr_on_stack,
sigsave.retaddr = retaddr;
sigsave.retaddr_on_stack = retaddr_on_stack;
/* FIXME: Not multi-thread aware */
- sigsave.newmask = myself->getsigmask () | siga.sa_mask | SIGTOMASK (sig);
+ sigsave.oldmask = myself->getsigmask ();
+ sigsave.newmask = sigsave.oldmask | siga.sa_mask | SIGTOMASK (sig);
sigsave.sa_flags = siga.sa_flags;
sigsave.func = (void (*)(int)) handler;
sigsave.sig = sig;