fix setjmp test
authorSzabolcs Nagy <nsz@port70.net>
Thu, 23 Aug 2018 09:04:27 +0000 (09:04 +0000)
committerSzabolcs Nagy <nsz@port70.net>
Thu, 23 Aug 2018 09:04:27 +0000 (09:04 +0000)
sigprocmask has restrict qualified args so they should not alias.

src/functional/setjmp.c

index adba1a6..7ba09d3 100644 (file)
@@ -11,7 +11,7 @@ int main(void)
        jmp_buf jb;
        sigjmp_buf sjb;
        volatile sigset_t oldset;
-       sigset_t set;
+       sigset_t set, set2;
 
        if (!setjmp(jb)) {
                x = 1;
@@ -29,8 +29,8 @@ int main(void)
 
        sigemptyset(&set);
        sigaddset(&set, SIGUSR1);
-       sigprocmask(SIG_UNBLOCK, &set, &set);
-       oldset = set;
+       sigprocmask(SIG_UNBLOCK, &set, &set2);
+       oldset = set2;
 
        /* Improve the chances of catching failure of sigsetjmp to
         * properly save the signal mask in the sigjmb_buf. */
@@ -43,13 +43,13 @@ int main(void)
                siglongjmp(sjb, 1);
        }
        set = oldset;
-       sigprocmask(SIG_SETMASK, &set, &set);
-       TEST(sigismember(&set, SIGUSR1)==0, "siglongjmp failed to restore mask\n");
+       sigprocmask(SIG_SETMASK, &set, &set2);
+       TEST(sigismember(&set2, SIGUSR1)==0, "siglongjmp failed to restore mask\n");
 
        sigemptyset(&set);
        sigaddset(&set, SIGUSR1);
-       sigprocmask(SIG_UNBLOCK, &set, &set);
-       oldset = set;
+       sigprocmask(SIG_UNBLOCK, &set, &set2);
+       oldset = set2;
 
        if (!sigsetjmp(sjb, 0)) {
                sigemptyset(&set);
@@ -58,8 +58,8 @@ int main(void)
                siglongjmp(sjb, 1);
        }
        set = oldset;
-       sigprocmask(SIG_SETMASK, &set, &set);
-       TEST(sigismember(&set, SIGUSR1)==1, "siglongjmp incorrectly restored mask\n");
+       sigprocmask(SIG_SETMASK, &set, &set2);
+       TEST(sigismember(&set2, SIGUSR1)==1, "siglongjmp incorrectly restored mask\n");
 
        return t_status;
 }