* spawn.cc (do_cleanup): Properly restore SIGINT/SIGQUIT even if they had
previously been SIG_DFL.
This commit is contained in:
parent
e04c777cc6
commit
d83eb0c7d0
|
@ -1,3 +1,8 @@
|
|||
2005-03-02 Christopher Faylor <cgf@timesys.com>
|
||||
|
||||
* spawn.cc (do_cleanup): Properly restore SIGINT/SIGQUIT even if they
|
||||
had previously been SIG_DFL.
|
||||
|
||||
2005-03-01 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* fhandler_disk_file.cc (fhandler_disk_file::touch_ctime): Replace
|
||||
|
|
|
@ -332,12 +332,12 @@ static void
|
|||
do_cleanup (void *args)
|
||||
{
|
||||
# define cleanup ((pthread_cleanup *) args)
|
||||
if (cleanup->oldint)
|
||||
signal (SIGINT, cleanup->oldint);
|
||||
if (cleanup->oldquit)
|
||||
signal (SIGQUIT, cleanup->oldquit);
|
||||
if (cleanup->oldmask != (sigset_t) -1)
|
||||
sigprocmask (SIG_SETMASK, &(cleanup->oldmask), NULL);
|
||||
{
|
||||
signal (SIGINT, cleanup->oldint);
|
||||
signal (SIGQUIT, cleanup->oldquit);
|
||||
sigprocmask (SIG_SETMASK, &(cleanup->oldmask), NULL);
|
||||
}
|
||||
# undef cleanup
|
||||
}
|
||||
|
||||
|
@ -755,7 +755,6 @@ spawn_guts (const char * prog_arg, const char *const *argv,
|
|||
|
||||
int res;
|
||||
pthread_cleanup cleanup;
|
||||
pthread_cleanup_push (do_cleanup, (void *) &cleanup);
|
||||
if (mode == _P_SYSTEM)
|
||||
{
|
||||
sigset_t child_block;
|
||||
|
@ -765,6 +764,7 @@ spawn_guts (const char * prog_arg, const char *const *argv,
|
|||
sigaddset (&child_block, SIGCHLD);
|
||||
(void) sigprocmask (SIG_BLOCK, &child_block, &cleanup.oldmask);
|
||||
}
|
||||
pthread_cleanup_push (do_cleanup, (void *) &cleanup);
|
||||
|
||||
/* Fixup the parent data structures if needed and resume the child's
|
||||
main thread. */
|
||||
|
|
Loading…
Reference in New Issue