diff options
author | nagachika <nagachika@ruby-lang.org> | 2022-03-12 16:53:37 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2022-03-12 16:53:37 +0900 |
commit | e18e6af604786be481115c7340c1450332615b57 (patch) | |
tree | 6d5f0645c3338dff5502baa928d9e622766b72ae /test/ruby | |
parent | bac99c5175bf58815846f9987093a6d944d07fd3 (diff) |
merge revision(s) 9e0a91d0640600f2dfd7fc1d5fae6667019c9ca5: [Backport #18458]
Don't segfault if Warning.warn is undefined
Check that there is a method entry for the method before passing
it to rb_method_entry_arity.
Fixes [Bug #18458]
---
error.c | 3 ++-
test/ruby/test_exception.rb | 8 ++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
Diffstat (limited to 'test/ruby')
-rw-r--r-- | test/ruby/test_exception.rb | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index 087bcda5ac..0f3e11b566 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -1100,6 +1100,14 @@ $stderr = $stdout; raise "\x82\xa0"') do |outs, errs, status| assert_empty warning end + def test_undef_Warning_warn + assert_separately([], "#{<<-"begin;"}\n#{<<-"end;"}") + begin; + Warning.undef_method(:warn) + assert_raise(NoMethodError) { warn "" } + end; + end + def test_undefined_backtrace assert_separately([], "#{<<-"begin;"}\n#{<<-"end;"}") begin; |