diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | signal.c | 10 |
2 files changed, 13 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Sat Sep 6 00:49:41 2014 Tanaka Akira <akr@fsij.org> + + * signal.c (ruby_signal): Don't set SA_SIGINFO for SIG_IGN and + SIG_DFL. + Fri Sep 5 21:45:33 2014 Tanaka Akira <akr@fsij.org> * process.c (disable_child_handler_before_fork): New function. @@ -569,8 +569,14 @@ ruby_signal(int signum, sighandler_t handler) sigemptyset(&sigact.sa_mask); #ifdef USE_SIGALTSTACK - sigact.sa_sigaction = (ruby_sigaction_t*)handler; - sigact.sa_flags = SA_SIGINFO; + if (handler == SIG_IGN || handler == SIG_DFL) { + sigact.sa_handler = handler; + sigact.sa_flags = 0; + } + else { + sigact.sa_sigaction = (ruby_sigaction_t*)handler; + sigact.sa_flags = SA_SIGINFO; + } #else sigact.sa_handler = handler; sigact.sa_flags = 0; |