X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsignal%2Fsiglongjmp.c;h=2974ff7fc49f9067139db95c72c99f5859121b19;hb=a516077feba96ec24d1ca8a9cbb8490bfdd066f1;hp=33ac30eaba05597efd6509843393a7e4800ef4fd;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01;p=musl diff --git a/src/signal/siglongjmp.c b/src/signal/siglongjmp.c index 33ac30ea..2974ff7f 100644 --- a/src/signal/siglongjmp.c +++ b/src/signal/siglongjmp.c @@ -1,12 +1,11 @@ #include #include #include +#include "syscall.h" +#include "pthread_impl.h" -void siglongjmp(sigjmp_buf buf, int ret) +_Noreturn void siglongjmp(sigjmp_buf buf, int ret) { - 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) __restore_sigs(buf->__ss); + longjmp(buf, ret); }