]> sourceware.org Git - glibc.git/commitdiff
(sigaction): Handle NULL argument.
authorUlrich Drepper <drepper@redhat.com>
Sun, 9 Aug 1998 09:02:55 +0000 (09:02 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 9 Aug 1998 09:02:55 +0000 (09:02 +0000)
1998-08-08 11:18  H.J. Lu  <hjl@gnu.org>

* signals.c (sigaction): Handle NULL argument.

linuxthreads/ChangeLog
linuxthreads/signals.c

index 26a87cb2c3c6293eed70e2e4cfd21c33b139626a..c89fa758a374ccf47ce9643c8ea14e885ccaa331 100644 (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
index ac752d145a11a0ba02863ea6fb664622ec2c1c9c..392b5ea5a99024066ee511daa797a0dbf1a4e9c2 100644 (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;
 }
 
This page took 0.04959 seconds and 5 git commands to generate.