summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--test/ruby/test_settracefunc.rb2
-rw-r--r--vm_insnhelper.c2
3 files changed, 11 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8264b44a9..3b30e90e3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 8e06c3b51..948616377 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 be8b07ed1..5da3f1783 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 {