From a4cbd6412aa8b16893db47ff18243bb4d5371899 Mon Sep 17 00:00:00 2001 From: ko1 Date: Wed, 11 Dec 2013 03:39:52 +0000 Subject: [PATCH] * eval.c (rb_raise_jump): pop frame after setup exception. Patches by deivid (David Rodriguez). [Bug #8886] * test/minitest/test_minitest_unit.rb: catch up this change. * test/ruby/test_backtrace.rb: ditto. * test/ruby/test_settracefunc.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44133 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 11 +++++++++++ eval.c | 4 ++-- test/minitest/test_minitest_unit.rb | 5 +++++ test/ruby/test_backtrace.rb | 2 +- test/ruby/test_settracefunc.rb | 4 ++-- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index eb47794185..b20cc172e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Wed Dec 11 12:38:17 2013 Koichi Sasada + + * eval.c (rb_raise_jump): pop frame after setup exception. + Patches by deivid (David Rodriguez). [Bug #8886] + + * test/minitest/test_minitest_unit.rb: catch up this change. + + * test/ruby/test_backtrace.rb: ditto. + + * test/ruby/test_settracefunc.rb: ditto. + Wed Dec 11 04:54:03 2013 Eric Hodel * lib/rubygems: Update to RubyGems master ec8ed22. Notable changes diff --git a/eval.c b/eval.c index 873d549739..7e64baa938 100644 --- a/eval.c +++ b/eval.c @@ -688,10 +688,10 @@ rb_raise_jump(VALUE mesg) VALUE self = cfp->self; ID mid = cfp->me->called_id; - th->cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp); - setup_exception(th, TAG_RAISE, mesg); + th->cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp); + EXEC_EVENT_HOOK(th, RUBY_EVENT_C_RETURN, self, mid, klass, Qnil); rb_thread_raised_clear(th); JUMP_TAG(TAG_RAISE); diff --git a/test/minitest/test_minitest_unit.rb b/test/minitest/test_minitest_unit.rb index 0f29614e87..f8c7028bce 100644 --- a/test/minitest/test_minitest_unit.rb +++ b/test/minitest/test_minitest_unit.rb @@ -296,6 +296,7 @@ class TestMiniTestRunner < MetaMetaMetaTestCase 1) Error: ##test_error: RuntimeError: unhandled exception + FILE:LINE:in \`raise\' FILE:LINE:in \`test_error\' 2 tests, 1 assertions, 0 failures, 1 errors, 0 skips @@ -323,6 +324,7 @@ class TestMiniTestRunner < MetaMetaMetaTestCase 1) Error: ##test_something: RuntimeError: unhandled exception + FILE:LINE:in \`raise\' FILE:LINE:in \`teardown\' 1 tests, 1 assertions, 0 failures, 1 errors, 0 skips @@ -1210,6 +1212,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase Class: Message: <\"icky\"> ---Backtrace--- + FILE:LINE:in \`raise\' FILE:LINE:in \`test_assert_raises_triggered_different\' --------------- EOM @@ -1233,6 +1236,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase Class: Message: <\"icky\"> ---Backtrace--- + FILE:LINE:in \`raise\' FILE:LINE:in \`test_assert_raises_triggered_different_msg\' --------------- EOM @@ -1279,6 +1283,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase Class: Message: <\"AnError\"> ---Backtrace--- + FILE:LINE:in \`raise\' FILE:LINE:in \`test_assert_raises_triggered_subclass\' --------------- EOM diff --git a/test/ruby/test_backtrace.rb b/test/ruby/test_backtrace.rb index 91dec4a943..e1491e9c63 100644 --- a/test/ruby/test_backtrace.rb +++ b/test/ruby/test_backtrace.rb @@ -10,7 +10,7 @@ class TestBacktrace < Test::Unit::TestCase e.backtrace end }.resume - assert_equal(1, bt.size) + assert_equal(2, bt.size) assert_match(/.+:\d+:.+/, bt[0]) end diff --git a/test/ruby/test_settracefunc.rb b/test/ruby/test_settracefunc.rb index 1de7b901b0..42f1589a18 100644 --- a/test/ruby/test_settracefunc.rb +++ b/test/ruby/test_settracefunc.rb @@ -257,7 +257,7 @@ class TestSetTraceFunc < Test::Unit::TestCase events.shift) assert_equal(["c-return", 5, :backtrace, Exception], events.shift) - assert_equal(["raise", 5, :test_raise, TestSetTraceFunc], + assert_equal(["raise", 5, :raise, Kernel], events.shift) assert_equal(["c-return", 5, :raise, Kernel], events.shift) @@ -517,7 +517,7 @@ class TestSetTraceFunc < Test::Unit::TestCase [:c_return,20, "xyzzy", Exception, :exception, RuntimeError, :outer, raised_exc], [:c_call, 20, "xyzzy", Exception, :backtrace, raised_exc, :outer, :nothing], [:c_return,20, "xyzzy", Exception, :backtrace, raised_exc, :outer, nil], - [:raise, 20, "xyzzy", TestSetTraceFunc, :trace_by_tracepoint, self, :outer, raised_exc], + [:raise, 20, "xyzzy", Kernel, :raise, self, :outer, raised_exc], [:c_return,20, "xyzzy", Kernel, :raise, self, :outer, nil], [:c_call, 20, "xyzzy", Module, :===, RuntimeError,:outer, :nothing], [:c_return,20, "xyzzy", Module, :===, RuntimeError,:outer, true],