(sigwait): NSIG is no signal number. Block all signals while in
authordrepper <drepper>
Tue, 17 Apr 2001 06:45:43 +0000 (06:45 +0000)
committerdrepper <drepper>
Tue, 17 Apr 2001 06:45:43 +0000 (06:45 +0000)
signal handler for signals in SET.

linuxthreads/signals.c

index 714e346..8a0dabf 100644 (file)
@@ -188,7 +188,7 @@ int sigwait(const sigset_t * set, int * sig)
      signals in set is unspecified." */
   sigfillset(&mask);
   sigdelset(&mask, __pthread_sig_cancel);
-  for (s = 1; s <= NSIG; s++) {
+  for (s = 1; s < NSIG; s++) {
     if (sigismember(set, s) &&
         s != __pthread_sig_restart &&
         s != __pthread_sig_cancel &&
@@ -198,7 +198,7 @@ int sigwait(const sigset_t * set, int * sig)
           sighandler[s].old == (arch_sighandler_t) SIG_DFL ||
           sighandler[s].old == (arch_sighandler_t) SIG_IGN) {
         sa.sa_handler = pthread_null_sighandler;
-        sigemptyset(&sa.sa_mask);
+        sigfillset(&sa.sa_mask);
         sa.sa_flags = 0;
         sigaction(s, &sa, NULL);
       }