overhaul cancellation to fix resource leaks and dangerous behavior with signals
[musl] / src / signal / sigsuspend.c
index 0806288..9ee7124 100644 (file)
@@ -6,7 +6,8 @@ int sigsuspend(const sigset_t *mask)
 {
        int ret;
        CANCELPT_BEGIN;
-       ret = syscall2(__NR_rt_sigsuspend, (long)mask, SYSCALL_SIGSET_SIZE);
+       ret = syscall(__NR_rt_sigsuspend, mask, 8);
+       if (ret<0) CANCELPT_TRY;
        CANCELPT_END;
        return ret;
 }