* 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.
This commit is contained in:
Christopher Faylor
2004-10-07 16:49:30 +00:00
parent 7c3db8ea2e
commit 859d85dee0
3 changed files with 10 additions and 2 deletions

View File

@ -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
}