summaryrefslogtreecommitdiff
path: root/signal.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-10 09:35:03 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-10 09:35:03 +0000
commit67dba250e8a2b57926e2474afb07aac1fcf0040c (patch)
tree6288c9fbe7b5937e1e8f3eafdfb70bfa79c3491c /signal.c
parent991e95bb36ad03d92c065f2c3c5d8d2a5b3af037 (diff)
signal.c: consider non-sigaltstack platforms
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'signal.c')
-rw-r--r--signal.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/signal.c b/signal.c
index 326179f383..5773802808 100644
--- a/signal.c
+++ b/signal.c
@@ -621,12 +621,17 @@ ruby_signal(int signum, sighandler_t handler)
case RUBY_SIGCHLD:
if (handler == SIG_IGN) {
ruby_nocldwait = 1;
+# ifdef USE_SIGALTSTACK
if (sigact.sa_flags & SA_SIGINFO) {
sigact.sa_sigaction = (ruby_sigaction_t*)sighandler;
}
else {
sigact.sa_handler = sighandler;
}
+# else
+ sigact.sa_handler = handler;
+ sigact.sa_flags = 0;
+# endif
}
else {
ruby_nocldwait = 0;