aboutsummaryrefslogtreecommitdiffstats
path: root/signal.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-07-26 02:29:03 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-07-26 02:29:03 +0000
commitcb549df7fd4f2bcd1f0f4703084d41a8a7fd60a0 (patch)
treee70c89c59248740ac3c7926606f446de3fca339d /signal.c
parent6a2a8172241ca5aab350a28f18fbe2b88ae35063 (diff)
downloadruby-cb549df7fd4f2bcd1f0f4703084d41a8a7fd60a0.tar.gz
signal.c: discard SIGSYS
* signal.c (default_handler, Init_signal): discard SIGSYS, ENOSYS should raise a SystemCallError always instead. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'signal.c')
-rw-r--r--signal.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/signal.c b/signal.c
index 5d5cb6b2b6..34d229a71d 100644
--- a/signal.c
+++ b/signal.c
@@ -935,6 +935,13 @@ check_reserved_signal_(const char *name, size_t name_len)
}
#endif
+#ifdef SIGSYS
+static RETSIGTYPE
+sig_do_nothing(int sig)
+{
+}
+#endif
+
static void
signal_exec(VALUE cmd, int safe, int sig)
{
@@ -1062,6 +1069,11 @@ default_handler(int sig)
func = SIG_IGN;
break;
#endif
+#ifdef SIGSYS
+ case SIGSYS:
+ func = sig_do_nothing;
+ break;
+#endif
default:
func = SIG_DFL;
break;
@@ -1477,6 +1489,9 @@ Init_signal(void)
#ifdef SIGPIPE
install_sighandler(SIGPIPE, SIG_IGN);
#endif
+#ifdef SIGSYS
+ install_sighandler(SIGSYS, sig_do_nothing);
+#endif
#if defined(SIGCLD)
init_sigchld(SIGCLD);