diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-03-02 04:04:30 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-03-02 04:04:30 +0000 |
commit | 76d1d5269f72e72e8fb39877bb1850aca823158d (patch) | |
tree | 893db691c0b42bfb7d8643ed8b4929123c5df741 | |
parent | ba536e41549f694d5c7434edb967ee571b2161c2 (diff) | |
download | ruby-76d1d5269f72e72e8fb39877bb1850aca823158d.tar.gz |
signal.c: nil for invalid signum
* signal.c (sig_signame): return nil if the argument is a valid
signal number.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49801 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | signal.c | 1 | ||||
-rw-r--r-- | test/ruby/test_signal.rb | 9 |
3 files changed, 15 insertions, 0 deletions
@@ -1,3 +1,8 @@ +Mon Mar 2 13:04:27 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * signal.c (sig_signame): return nil if the argument is a valid + signal number. + Mon Mar 2 12:05:04 2015 Naohisa Goto <ngotogenome@gmail.com> * test/net/ftp/test_ftp.rb (create_ftp_server): set SO_OOBINLINE @@ -257,6 +257,7 @@ static VALUE sig_signame(VALUE recv, VALUE signo) { const char *signame = signo2signm(NUM2INT(signo)); + if (!signame) return Qnil; return rb_str_new_cstr(signame); } diff --git a/test/ruby/test_signal.rb b/test/ruby/test_signal.rb index 4a59aa66c8..781045d30a 100644 --- a/test/ruby/test_signal.rb +++ b/test/ruby/test_signal.rb @@ -218,6 +218,15 @@ class TestSignal < Test::Unit::TestCase end def test_signame + Signal.list.each do |name, num| + assert_equal(num, Signal.list[Signal.signame(num)], name) + end + assert_nil(Signal.signame(-1)) + signums = Signal.list.invert + assert_nil(Signal.signame((1..1000).find {|num| !signums[num]})) + end + + def test_signame_delivered 10.times do IO.popen([EnvUtil.rubybin, "-e", <<EOS, :err => File::NULL]) do |child| Signal.trap("INT") do |signo| |