diff options
author | Christopher Faylor <me@cgf.cx> | 2002-08-16 23:07:28 +0400 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-08-16 23:07:28 +0400 |
commit | 775275aac7f96c2fdccbefde960afd7eda079a7a (patch) | |
tree | 2b033b5f4105e73353d200f8b0a98230e1a94ca7 /winsup | |
parent | a54ad580fc13fd76020c6042cea1a7884e87a946 (diff) |
* exceptions.cc (interrupt_setup): Ensure that the previous signal mask is
properly saved.
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/exceptions.cc | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 53535e0d2..19b0030d9 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2002-08-16 Pavel Tsekov <ptsekov@gmx.net> + + * exceptions.cc (interrupt_setup): Ensure that the previous signal mask + is properly saved. + 2002-08-15 Thomas Pfaff <tpfaff@gmx.net> * dcrt0.cc: Modify define for CYGWIN_GUARD. diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 9e2e631ec..914e4424d 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; |