From 99acd378d82d60d446ef12ccdaa332ef29df3243 Mon Sep 17 00:00:00 2001 From: akr Date: Fri, 5 Sep 2014 15:50:24 +0000 Subject: [PATCH] * signal.c (ruby_signal): Don't set SA_SIGINFO for SIG_IGN and SIG_DFL. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ signal.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 64ecb9c032..7b507476ed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Sep 6 00:49:41 2014 Tanaka Akira + + * signal.c (ruby_signal): Don't set SA_SIGINFO for SIG_IGN and + SIG_DFL. + Fri Sep 5 21:45:33 2014 Tanaka Akira * process.c (disable_child_handler_before_fork): New function. diff --git a/signal.c b/signal.c index e723e6680c..3faa267978 100644 --- a/signal.c +++ b/signal.c @@ -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;