fix omission that kept sa_restorer from being used
authorRich Felker <dalias@aerifal.cx>
Sun, 13 Feb 2011 21:46:33 +0000 (16:46 -0500)
committerRich Felker <dalias@aerifal.cx>
Sun, 13 Feb 2011 21:46:33 +0000 (16:46 -0500)
include/bits/signal.h
src/signal/sigaction.c

index 2427f37..c0bb818 100644 (file)
@@ -48,6 +48,7 @@ struct __siginfo
 #define SA_RESTART    0x10000000
 #define SA_NODEFER    0x40000000
 #define SA_RESETHAND  0x80000000
 #define SA_RESTART    0x10000000
 #define SA_NODEFER    0x40000000
 #define SA_RESETHAND  0x80000000
+#define SA_RESTORER   0x04000000
 
 #define SS_ONSTACK    1
 #define SS_DISABLE    2
 
 #define SS_ONSTACK    1
 #define SS_DISABLE    2
index 4acd173..9a36226 100644 (file)
@@ -20,7 +20,7 @@ int __libc_sigaction(int sig, const struct sigaction *sa, struct sigaction *old)
        long pksa=0, pkold=0;
        if (sa) {
                ksa.handler = sa->sa_handler;
        long pksa=0, pkold=0;
        if (sa) {
                ksa.handler = sa->sa_handler;
-               ksa.flags = sa->sa_flags;
+               ksa.flags = sa->sa_flags | SA_RESTORER;
                ksa.restorer = restorer;
                ksa.mask = sa->sa_mask;
                pksa = (long)&ksa;
                ksa.restorer = restorer;
                ksa.mask = sa->sa_mask;
                pksa = (long)&ksa;