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:
parent
ba536e4154
commit
76d1d5269f
@ -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>
|
Mon Mar 2 12:05:04 2015 Naohisa Goto <ngotogenome@gmail.com>
|
||||||
|
|
||||||
* test/net/ftp/test_ftp.rb (create_ftp_server): set SO_OOBINLINE
|
* test/net/ftp/test_ftp.rb (create_ftp_server): set SO_OOBINLINE
|
||||||
|
1
signal.c
1
signal.c
@ -257,6 +257,7 @@ static VALUE
|
|||||||
sig_signame(VALUE recv, VALUE signo)
|
sig_signame(VALUE recv, VALUE signo)
|
||||||
{
|
{
|
||||||
const char *signame = signo2signm(NUM2INT(signo));
|
const char *signame = signo2signm(NUM2INT(signo));
|
||||||
|
if (!signame) return Qnil;
|
||||||
return rb_str_new_cstr(signame);
|
return rb_str_new_cstr(signame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,6 +218,15 @@ class TestSignal < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_signame
|
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
|
10.times do
|
||||||
IO.popen([EnvUtil.rubybin, "-e", <<EOS, :err => File::NULL]) do |child|
|
IO.popen([EnvUtil.rubybin, "-e", <<EOS, :err => File::NULL]) do |child|
|
||||||
Signal.trap("INT") do |signo|
|
Signal.trap("INT") do |signo|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user