(sigaction): Handle NULL argument.

1998-08-08 11:18  H.J. Lu  <hjl@gnu.org>

	* signals.c (sigaction): Handle NULL argument.
This commit is contained in:
Ulrich Drepper 1998-08-09 09:02:55 +00:00
parent 88187dcc62
commit cf0fd0161c
2 changed files with 17 additions and 5 deletions

View File

@ -1,3 +1,7 @@
1998-08-08 11:18 H.J. Lu <hjl@gnu.org>
* signals.c (sigaction): Handle NULL argument.
1998-08-04 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/bits/sigthread.h: Use __sigset_t instead

View File

@ -93,16 +93,24 @@ int sigaction(int sig, const struct sigaction * act,
struct sigaction * oact)
{
struct sigaction newact;
struct sigaction *newactp;
if (sig == __pthread_sig_restart || sig == __pthread_sig_cancel)
return EINVAL;
newact = *act;
if (act->sa_handler != SIG_IGN && act->sa_handler != SIG_DFL)
newact.sa_handler = pthread_sighandler;
if (__sigaction(sig, &newact, oact) == -1)
if (act)
{
newact = *act;
if (act->sa_handler != SIG_IGN && act->sa_handler != SIG_DFL)
newact.sa_handler = pthread_sighandler;
newactp = &newact;
}
else
newactp = NULL;
if (__sigaction(sig, newactp, oact) == -1)
return -1;
if (oact != NULL) oact->sa_handler = sighandler[sig];
sighandler[sig] = act->sa_handler;
if (act)
sighandler[sig] = act->sa_handler;
return 0;
}