X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsignal%2Fsigset.c;h=f3e8c4077ec27c5eaf2f23bdf79f6f4491917eff;hb=370679ba984d8a466d635234dc7a3084e98c0071;hp=1b6b38fdde054954c74154f2b9c416af715aa9bf;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01;p=musl diff --git a/src/signal/sigset.c b/src/signal/sigset.c index 1b6b38fd..f3e8c407 100644 --- a/src/signal/sigset.c +++ b/src/signal/sigset.c @@ -1,19 +1,18 @@ #include -#include void (*sigset(int sig, void (*handler)(int)))(int) { struct sigaction sa, sa_old; - sigset_t mask; + sigset_t mask, mask_old; sigemptyset(&mask); if (sigaddset(&mask, sig) < 0) return SIG_ERR; if (handler == SIG_HOLD) { - if (sigaction(sig, NULL, &sa_old) < 0) + if (sigaction(sig, 0, &sa_old) < 0) return SIG_ERR; - if (sigprocmask(SIG_BLOCK, &mask, &mask) < 0) + if (sigprocmask(SIG_BLOCK, &mask, &mask_old) < 0) return SIG_ERR; } else { sa.sa_handler = handler; @@ -21,8 +20,8 @@ void (*sigset(int sig, void (*handler)(int)))(int) sigemptyset(&sa.sa_mask); if (sigaction(sig, &sa, &sa_old) < 0) return SIG_ERR; - if (sigprocmask(SIG_UNBLOCK, &mask, &mask) < 0) + if (sigprocmask(SIG_UNBLOCK, &mask, &mask_old) < 0) return SIG_ERR; } - return sigismember(&mask, sig) ? SIG_HOLD : sa_old.sa_handler; + return sigismember(&mask_old, sig) ? SIG_HOLD : sa_old.sa_handler; }