summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/spawn.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2004-10-07 16:49:30 +0000
committerChristopher Faylor <me@cgf.cx>2004-10-07 16:49:30 +0000
commit859d85dee0d52fb55ee9d98b16e7318f176f6bbe (patch)
tree3c10cb70ba75044273f3e18b20414d78f54a77cb /winsup/cygwin/spawn.cc
parent7c3db8ea2e668ae6e482900306d230c4fd0f50bf (diff)
downloadcygnal-859d85dee0d52fb55ee9d98b16e7318f176f6bbe.tar.gz
cygnal-859d85dee0d52fb55ee9d98b16e7318f176f6bbe.tar.bz2
cygnal-859d85dee0d52fb55ee9d98b16e7318f176f6bbe.zip
* spawn.cc (pthread_cleanup::oldmask): Default to invalid signal mask.
(do_cleanup): Test for invalid signal mask to decide whether to restore the mask rather than assuming zero mask indicates that there is nothing to do.
Diffstat (limited to 'winsup/cygwin/spawn.cc')
-rw-r--r--winsup/cygwin/spawn.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc
index 0766b40a7..db4210b31 100644
--- a/winsup/cygwin/spawn.cc
+++ b/winsup/cygwin/spawn.cc
@@ -326,7 +326,7 @@ struct pthread_cleanup
_sig_func_ptr oldint;
_sig_func_ptr oldquit;
sigset_t oldmask;
- pthread_cleanup (): oldint (NULL), oldquit (NULL), oldmask (0) {}
+ pthread_cleanup (): oldint (NULL), oldquit (NULL), oldmask ((sigset_t) -1) {}
};
static void
@@ -337,7 +337,7 @@ do_cleanup (void *args)
signal (SIGINT, cleanup->oldint);
if (cleanup->oldquit)
signal (SIGQUIT, cleanup->oldquit);
- if (cleanup->oldmask)
+ if (cleanup->oldmask != (sigset_t) -1)
sigprocmask (SIG_SETMASK, &(cleanup->oldmask), NULL);
# undef cleanup
}