diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-12-13 18:35:41 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-12-13 18:35:41 +0000 |
commit | c51784711a915a3f2830e97a364e7fad7e740523 (patch) | |
tree | 48f42d67bd473ea180dbf4b40e8365a85712a2b7 | |
parent | 5164ba53f2b17ead1e0c471652012ed4557b4b8d (diff) |
merge revision(s) 25670:
* eval.c (call_trace_func): remove the trace hook if any exception
raised. [ruby-list:46515]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@26082 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | eval.c | 6 | ||||
-rw-r--r-- | test/ruby/test_settracefunc.rb | 5 | ||||
-rw-r--r-- | version.h | 2 |
4 files changed, 16 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Mon Dec 14 03:21:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * eval.c (call_trace_func): remove the trace hook if any exception + raised. [ruby-list:46515] + Mon Dec 14 02:27:32 2009 Yusuke Endoh <mame@tsg.ne.jp> * hash.c (rb_hash): always return a fixnum value because a return @@ -2772,7 +2772,11 @@ call_trace_func(event, node, self, id, klass) tracing = 0; ruby_current_node = node_save; SET_CURRENT_SOURCE(); - if (state) JUMP_TAG(state); + if (state) { + trace_func = 0; + rb_remove_event_hook(call_trace_func); + JUMP_TAG(state); + } } static VALUE diff --git a/test/ruby/test_settracefunc.rb b/test/ruby/test_settracefunc.rb index 14d6679407..765600f34d 100644 --- a/test/ruby/test_settracefunc.rb +++ b/test/ruby/test_settracefunc.rb @@ -135,4 +135,9 @@ class TestSetTraceFunc < Test::Unit::TestCase assert_equal(["c-call", 131, :set_trace_func, Kernel], events.shift) assert_equal([], events) end + + def test_bad_trace + e = Class.new(RuntimeError) + assert_raise(e) {set_trace_func proc{raise e}} + end end @@ -2,7 +2,7 @@ #define RUBY_RELEASE_DATE "2009-12-14" #define RUBY_VERSION_CODE 187 #define RUBY_RELEASE_CODE 20091214 -#define RUBY_PATCHLEVEL 228 +#define RUBY_PATCHLEVEL 229 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 |