diff options
author | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-05-15 13:37:47 +0000 |
---|---|---|
committer | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-05-15 13:37:47 +0000 |
commit | 29c2876d610275a42642ecb67ddc28906e484968 (patch) | |
tree | 8e23622a2735a6e446ea8c6b68847cb963b04896 /signal.c | |
parent | 980155686aa373e015f51e3e279403d2aa66d4b9 (diff) | |
download | ruby-29c2876d610275a42642ecb67ddc28906e484968.tar.gz |
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'signal.c')
-rw-r--r-- | signal.c | 19 |
1 files changed, 8 insertions, 11 deletions
@@ -359,6 +359,7 @@ rb_f_kill(int argc, VALUE *argv) int negative = 0; int sig; int i; + volatile VALUE str; const char *s; rb_secure(2); @@ -376,11 +377,11 @@ rb_f_kill(int argc, VALUE *argv) 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 @@ rb_f_kill(int argc, VALUE *argv) 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; } |