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
This commit is contained in:
nobu 2015-03-02 04:04:30 +00:00
Родитель ba536e4154
Коммит 76d1d5269f
3 изменённых файлов: 15 добавлений и 0 удалений

Просмотреть файл

@ -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);
}

Просмотреть файл

@ -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|