diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-03-24 11:09:51 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-03-24 11:09:51 +0000 |
commit | 058c981311f809ee48e3db9264ef82ce1e950c1b (patch) | |
tree | 03703fe42339a9e04c76007acf3381798152095c | |
parent | ffb7aaebc24ee9db3ac6c976a0536e52b91735c7 (diff) |
* eval.c (rb_eval): Call trace hook for if expression after the
condition has been evaluated, not before; submitted by Rocky
Bernstein in #18722.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | eval.c | 9 |
2 files changed, 12 insertions, 3 deletions
@@ -1,3 +1,9 @@ +Mon Mar 24 20:07:42 2008 Akinori MUSHA <knu@iDaemons.org> + + * eval.c (rb_eval): Call trace hook for if expression after the + condition has been evaluated, not before; submitted by Rocky + Bernstein in #18722. + Mon Mar 24 19:44:53 2008 Akinori MUSHA <knu@iDaemons.org> * parse.y (yycompile): Always prepare a new array for each file's @@ -3038,13 +3038,16 @@ rb_eval(self, n) RETURN(Qfalse); case NODE_IF: - EXEC_EVENT_HOOK(RUBY_EVENT_LINE, node, self, - ruby_frame->last_func, - ruby_frame->last_class); if (RTEST(rb_eval(self, node->nd_cond))) { + EXEC_EVENT_HOOK(RUBY_EVENT_LINE, node, self, + ruby_frame->last_func, + ruby_frame->last_class); node = node->nd_body; } else { + EXEC_EVENT_HOOK(RUBY_EVENT_LINE, node, self, + ruby_frame->last_func, + ruby_frame->last_class); node = node->nd_else; } goto again; |