aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-05-09 23:48:47 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-05-09 23:48:47 +0000
commit08928bb528e2133e733606439765e91a7a5c5e6f (patch)
tree68447cc9661155cff863a10611dbb06029cf5a28
parent5d488225a4e2100358e1f564c9517f01d413c961 (diff)
downloadruby-08928bb528e2133e733606439765e91a7a5c5e6f.tar.gz
* signal.c (trap): Return "SYSTEM_DEFAULT" if SIG_DFL is set.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45894 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--signal.c1
-rw-r--r--test/ruby/test_signal.rb7
3 files changed, 12 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 1d84a2044e..936c8b77f9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sat May 10 08:47:36 2014 Tanaka Akira <akr@fsij.org>
+
+ * signal.c (trap): Return "SYSTEM_DEFAULT" if SIG_DFL is set.
+
Fri May 9 14:27:05 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (RUBY_SETJMP_TYPE): check for setjmp type after
diff --git a/signal.c b/signal.c
index 8625d942d4..7dc4247220 100644
--- a/signal.c
+++ b/signal.c
@@ -976,6 +976,7 @@ trap(int sig, sighandler_t func, VALUE command)
switch (oldcmd) {
case 0:
if (oldfunc == SIG_IGN) oldcmd = rb_str_new2("IGNORE");
+ else if (oldfunc == SIG_DFL) oldcmd = rb_str_new2("SYSTEM_DEFAULT");
else if (oldfunc == sighandler) oldcmd = rb_str_new2("DEFAULT");
else oldcmd = Qnil;
break;
diff --git a/test/ruby/test_signal.rb b/test/ruby/test_signal.rb
index 14be2d76aa..68da0d5840 100644
--- a/test/ruby/test_signal.rb
+++ b/test/ruby/test_signal.rb
@@ -175,6 +175,13 @@ class TestSignal < Test::Unit::TestCase
end;
end if Process.respond_to?(:kill)
+ def test_trap_system_default
+ assert_separately([], <<-End)
+ trap(:QUIT, "SYSTEM_DEFAULT")
+ assert_equal("SYSTEM_DEFAULT", trap(:QUIT, "DEFAULT"))
+ End
+ end
+
def test_signal_requiring
t = Tempfile.new(%w"require_ensure_test .rb")
t.puts "sleep"