mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* eval.c (rb_raise_jump): call c_return hook immediately after
popping `raise' frame. Patches by deivid (David Rodriguez). [Bug #8886] * test/ruby/test_settracefunc.rb: catch up this fix. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44139 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
78d7aa8ae3
commit
919f1438ae
3 changed files with 12 additions and 4 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
Wed Dec 11 16:45:58 2013 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
|
* eval.c (rb_raise_jump): call c_return hook immediately after
|
||||||
|
popping `raise' frame.
|
||||||
|
Patches by deivid (David Rodriguez). [Bug #8886]
|
||||||
|
|
||||||
|
* test/ruby/test_settracefunc.rb: catch up this fix.
|
||||||
|
|
||||||
Wed Dec 11 16:01:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Wed Dec 11 16:01:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* hash.c (rb_hash_reject): return a plain hash, without copying
|
* hash.c (rb_hash_reject): return a plain hash, without copying
|
||||||
|
|
2
eval.c
2
eval.c
|
@ -689,10 +689,10 @@ rb_raise_jump(VALUE mesg)
|
||||||
ID mid = cfp->me->called_id;
|
ID mid = cfp->me->called_id;
|
||||||
|
|
||||||
th->cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp);
|
th->cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp);
|
||||||
|
EXEC_EVENT_HOOK(th, RUBY_EVENT_C_RETURN, self, mid, klass, Qnil);
|
||||||
|
|
||||||
setup_exception(th, TAG_RAISE, mesg);
|
setup_exception(th, TAG_RAISE, mesg);
|
||||||
|
|
||||||
EXEC_EVENT_HOOK(th, RUBY_EVENT_C_RETURN, self, mid, klass, Qnil);
|
|
||||||
rb_thread_raised_clear(th);
|
rb_thread_raised_clear(th);
|
||||||
JUMP_TAG(TAG_RAISE);
|
JUMP_TAG(TAG_RAISE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -253,14 +253,14 @@ class TestSetTraceFunc < Test::Unit::TestCase
|
||||||
events.shift)
|
events.shift)
|
||||||
assert_equal(["c-return", 5, :exception, Exception],
|
assert_equal(["c-return", 5, :exception, Exception],
|
||||||
events.shift)
|
events.shift)
|
||||||
|
assert_equal(["c-return", 5, :raise, Kernel],
|
||||||
|
events.shift)
|
||||||
assert_equal(["c-call", 5, :backtrace, Exception],
|
assert_equal(["c-call", 5, :backtrace, Exception],
|
||||||
events.shift)
|
events.shift)
|
||||||
assert_equal(["c-return", 5, :backtrace, Exception],
|
assert_equal(["c-return", 5, :backtrace, Exception],
|
||||||
events.shift)
|
events.shift)
|
||||||
assert_equal(["raise", 5, :test_raise, TestSetTraceFunc],
|
assert_equal(["raise", 5, :test_raise, TestSetTraceFunc],
|
||||||
events.shift)
|
events.shift)
|
||||||
assert_equal(["c-return", 5, :raise, Kernel],
|
|
||||||
events.shift)
|
|
||||||
assert_equal(["c-call", 6, :===, Module],
|
assert_equal(["c-call", 6, :===, Module],
|
||||||
events.shift)
|
events.shift)
|
||||||
assert_equal(["c-return", 6, :===, Module],
|
assert_equal(["c-return", 6, :===, Module],
|
||||||
|
@ -515,10 +515,10 @@ class TestSetTraceFunc < Test::Unit::TestCase
|
||||||
[:c_call, 20, "xyzzy", Exception, :initialize, raised_exc, :outer, :nothing],
|
[:c_call, 20, "xyzzy", Exception, :initialize, raised_exc, :outer, :nothing],
|
||||||
[:c_return,20, "xyzzy", Exception, :initialize, raised_exc, :outer, raised_exc],
|
[:c_return,20, "xyzzy", Exception, :initialize, raised_exc, :outer, raised_exc],
|
||||||
[:c_return,20, "xyzzy", Exception, :exception, RuntimeError, :outer, raised_exc],
|
[:c_return,20, "xyzzy", Exception, :exception, RuntimeError, :outer, raised_exc],
|
||||||
|
[:c_return,20, "xyzzy", Kernel, :raise, self, :outer, nil],
|
||||||
[:c_call, 20, "xyzzy", Exception, :backtrace, raised_exc, :outer, :nothing],
|
[:c_call, 20, "xyzzy", Exception, :backtrace, raised_exc, :outer, :nothing],
|
||||||
[:c_return,20, "xyzzy", Exception, :backtrace, raised_exc, :outer, nil],
|
[:c_return,20, "xyzzy", Exception, :backtrace, raised_exc, :outer, nil],
|
||||||
[:raise, 20, "xyzzy", TestSetTraceFunc, :trace_by_tracepoint, self, :outer, raised_exc],
|
[:raise, 20, "xyzzy", TestSetTraceFunc, :trace_by_tracepoint, self, :outer, raised_exc],
|
||||||
[:c_return,20, "xyzzy", Kernel, :raise, self, :outer, nil],
|
|
||||||
[:c_call, 20, "xyzzy", Module, :===, RuntimeError,:outer, :nothing],
|
[:c_call, 20, "xyzzy", Module, :===, RuntimeError,:outer, :nothing],
|
||||||
[:c_return,20, "xyzzy", Module, :===, RuntimeError,:outer, true],
|
[:c_return,20, "xyzzy", Module, :===, RuntimeError,:outer, true],
|
||||||
[:line, 21, "xyzzy", TestSetTraceFunc, method, self, :outer, :nothing],
|
[:line, 21, "xyzzy", TestSetTraceFunc, method, self, :outer, :nothing],
|
||||||
|
|
Loading…
Reference in a new issue