X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fsignal%2Fsiglongjmp.c;h=9b4a5398cc72add3efbb36b60f7590aa22ce51b3;hb=5d26d5d15bf6c2fc8c0e58b76fb418b51e207af7;hp=17129175486c62bcd0aaa87a79789226a3cbe755;hpb=9ae8d5fc71a4b61ec826d58f03f7b543755fb1d4;p=musl diff --git a/src/signal/siglongjmp.c b/src/signal/siglongjmp.c index 17129175..9b4a5398 100644 --- a/src/signal/siglongjmp.c +++ b/src/signal/siglongjmp.c @@ -1,12 +1,11 @@ #include #include #include +#include "syscall.h" void siglongjmp(sigjmp_buf buf, int ret) { - unsigned long *flag = buf + sizeof(jmp_buf)/sizeof(long); - sigset_t *mask = (void *)(flag + 1); - if (*flag) - sigprocmask (SIG_SETMASK, mask, NULL); - longjmp((void *)buf, ret); + if (buf->__fl) + __syscall(SYS_rt_sigprocmask, SIG_SETMASK, buf->__ss, 0, 8); + longjmp(buf->__jb, ret); }