From 859d85dee0d52fb55ee9d98b16e7318f176f6bbe Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 7 Oct 2004 16:49:30 +0000 Subject: [PATCH] * 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. --- winsup/cygwin/ChangeLog | 7 +++++++ winsup/cygwin/cygheap.h | 1 + winsup/cygwin/spawn.cc | 4 ++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 8ded61409..90199f378 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2004-10-07 Christopher Faylor + + * 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. + 2004-10-07 Mark Paulus * fhandler_tty.cc (fhandler_tty_slave::read): Use previously diff --git a/winsup/cygwin/cygheap.h b/winsup/cygwin/cygheap.h index b8203bf08..1ab3a7f79 100644 --- a/winsup/cygwin/cygheap.h +++ b/winsup/cygwin/cygheap.h @@ -278,6 +278,7 @@ struct init_cygheap size_t sthreads; int open_fhs; pid_t pid; /* my pid */ + const char *system_root; void close_ctty (); }; 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 }