From 08928bb528e2133e733606439765e91a7a5c5e6f Mon Sep 17 00:00:00 2001 From: akr Date: Fri, 9 May 2014 23:48:47 +0000 Subject: [PATCH] * 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 --- ChangeLog | 4 ++++ signal.c | 1 + test/ruby/test_signal.rb | 7 +++++++ 3 files changed, 12 insertions(+) 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 + + * signal.c (trap): Return "SYSTEM_DEFAULT" if SIG_DFL is set. + Fri May 9 14:27:05 2014 Nobuyoshi Nakada * 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"