Bruno Haible <bruno <at> clisp.org> writes:

> 
> This module adds a sigprocmask() emulation based on signal().
> 
> Comments are welcome, as this is new and so far untested code.
> 
> + 
> +       for (sig = 0; sig < NSIG; sig++)
> +         if (received[NSIG])
> +           {
> +             #if HAVE_RAISE
> +             raise (sig);
> +             #else
> +             kill (getpid (), sig);
> +             #endif
> +           }
> +     }

Oops, on mingw, that typo made the process randomly abort during 
unblock_fatal_signals() because it was dereferencing beyond the array and 
raising an unknown signal number.  Checking in this obvious patch:

2006-10-17  Eric Blake  <[EMAIL PROTECTED]>

        * lib/sigprocmask.c (sigprocmask): Fix typo.

Index: lib/sigprocmask.c
===================================================================
RCS file: /sources/gnulib/gnulib/lib/sigprocmask.c,v
retrieving revision 1.1
diff -u -r1.1 sigprocmask.c
--- lib/sigprocmask.c   16 Oct 2006 11:55:35 -0000      1.1
+++ lib/sigprocmask.c   17 Oct 2006 15:24:31 -0000
@@ -178,7 +178,7 @@
              received[sig] = 0;
 
          for (sig = 0; sig < NSIG; sig++)
-           if (received[NSIG])
+           if (received[sig])
              {
                #if HAVE_RAISE
                raise (sig);





Reply via email to