ruby-changes:19538
From: nagachika <ko1@a...>
Date: Sun, 15 May 2011 22:46:49 +0900 (JST)
Subject: [ruby-changes:19538] nagachika:r31579 (trunk): * signal.c (rb_f_kill): accept '-SIGXXX' style signal with Symbol or
nagachika 2011-05-15 22:37:47 +0900 (Sun, 15 May 2011) New Revision: 31579 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=31579 Log: * signal.c (rb_f_kill): accept '-SIGXXX' style signal with Symbol or implicit convertion with #to_str. [ruby-dev:43169] fixes #4362 * test/ruby/test_signal.rb (test_signal_process_group): add a test for send signal to process group. Modified files: trunk/ChangeLog trunk/signal.c trunk/test/ruby/test_signal.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 31578) +++ ChangeLog (revision 31579) @@ -1,3 +1,10 @@ +Sun May 15 22:26:39 2011 CHIKANAGA Tomoyuki <nagachika00@g...> + + * signal.c (rb_f_kill): accept '-SIGXXX' style signal with Symbol or + implicit convertion with #to_str. [ruby-dev:43169] fixes #4362 + * test/ruby/test_signal.rb (test_signal_process_group): add a test + for send signal to process group. + Sun May 15 21:22:35 2011 CHIKANAGA Tomoyuki <nagachika00@g...> * cont.c (cont_init): clear macihne_stack_start/end of saved thread to Index: test/ruby/test_signal.rb =================================================================== --- test/ruby/test_signal.rb (revision 31578) +++ test/ruby/test_signal.rb (revision 31579) @@ -36,6 +36,18 @@ end end + def test_signal_process_group + return unless Process.respond_to?(:kill) + bug4362 = '[ruby-dev:43169]' + assert_nothing_raised(bug4362) do + pid = Process.spawn(EnvUtil.rubybin, '-e', '"sleep 10"', :pgroup => true) + Process.kill(:"-TERM", pid) + Process.waitpid(pid) + assert_equal(true, $?.signaled?) + assert_equal(Signal.list["TERM"], $?.termsig) + end + end + def test_exit_action return unless have_fork? # skip this test begin Index: signal.c =================================================================== --- signal.c (revision 31578) +++ signal.c (revision 31579) @@ -359,6 +359,7 @@ int negative = 0; int sig; int i; + volatile VALUE str; const char *s; rb_secure(2); @@ -376,11 +377,11 @@ case T_STRING: s = RSTRING_PTR(argv[0]); + str_signal: if (s[0] == '-') { negative++; s++; } - str_signal: if (strncmp("SIG", s, 3) == 0) s += 3; if((sig = signm2signo(s)) == 0) @@ -391,17 +392,13 @@ break; default: - { - VALUE str; - - str = rb_check_string_type(argv[0]); - if (!NIL_P(str)) { - s = RSTRING_PTR(str); - goto str_signal; - } - rb_raise(rb_eArgError, "bad signal type %s", - rb_obj_classname(argv[0])); + str = rb_check_string_type(argv[0]); + if (!NIL_P(str)) { + s = RSTRING_PTR(str); + goto str_signal; } + rb_raise(rb_eArgError, "bad signal type %s", + rb_obj_classname(argv[0])); break; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/