fix sigemptyset and sigfillset for mips
authorRich Felker <dalias@aerifal.cx>
Mon, 16 Sep 2013 16:58:51 +0000 (12:58 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 16 Sep 2013 16:58:51 +0000 (12:58 -0400)
they were leaving junk in the upper bits.

src/signal/sigemptyset.c
src/signal/sigfillset.c

index ca9b892..1d07471 100644 (file)
@@ -4,6 +4,10 @@
 int sigemptyset(sigset_t *set)
 {
        set->__bits[0] = 0;
-       if (sizeof(long)==4) set->__bits[1] = 0;
+       if (sizeof(long)==4 || _NSIG > 65) set->__bits[1] = 0;
+       if (sizeof(long)==4 && _NSIG > 65) {
+               set->__bits[2] = 0;
+               set->__bits[3] = 0;
+       }
        return 0;
 }
index 6c84b9b..4d0a807 100644 (file)
@@ -7,8 +7,13 @@ int sigfillset(sigset_t *set)
 #if ULONG_MAX == 0xffffffff
        set->__bits[0] = 0x7ffffffful;
        set->__bits[1] = 0xfffffffcul;
+       if (_NSIG > 65) {
+               set->__bits[2] = 0xfffffffful;
+               set->__bits[3] = 0xfffffffful;
+       }
 #else
        set->__bits[0] = 0xfffffffc7ffffffful;
+       if (_NSIG > 65) set->__bits[1] = 0xfffffffffffffffful;
 #endif
        return 0;
 }