diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | test/ruby/test_settracefunc.rb | 2 | ||||
-rw-r--r-- | vm_insnhelper.c | 2 |
3 files changed, 11 insertions, 1 deletions
@@ -1,3 +1,11 @@ +Tue Aug 18 11:37:24 2009 wanabe <s.wanabe@gmail.com> + + * vm_insnhelper.c (vm_call_cfunc): ensure hook c-return. + [Bug #1588] + + * test/ruby/test_settracefunc.rb (TestSetTraceFunc#test_raise): + follow above. + Tue Aug 18 01:57:00 2009 Yukihiro Matsumoto <matz@ruby-lang.org> * range.c (range_step): treat symbols specially so that iterating diff --git a/test/ruby/test_settracefunc.rb b/test/ruby/test_settracefunc.rb index 8e06c3b515..9486163770 100644 --- a/test/ruby/test_settracefunc.rb +++ b/test/ruby/test_settracefunc.rb @@ -167,6 +167,8 @@ class TestSetTraceFunc < Test::Unit::TestCase events.shift) assert_equal(["raise", 5, :test_raise, TestSetTraceFunc], events.shift) + assert_equal(["c-return", 5, :raise, Kernel], + events.shift) assert_equal(["c-call", 6, :===, Module], events.shift) assert_equal(["c-return", 6, :===, Module], diff --git a/vm_insnhelper.c b/vm_insnhelper.c index be8b07ed17..5da3f1783b 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -370,7 +370,7 @@ vm_call_cfunc(rb_thread_t *th, rb_control_frame_t *reg_cfp, #if defined(__cplusplus) || (__STDC_VERSION__ >= 199901L) // TODO: fix me. separate event #endif - if (th->event_flags & RUBY_EVENT_C_RETURN) { + if (th->event_flags & (RUBY_EVENT_C_RETURN | RUBY_EVENT_VM)) { state = TH_EXEC_TAG(); } else { |