summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-03-24 11:09:51 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-03-24 11:09:51 +0000
commit058c981311f809ee48e3db9264ef82ce1e950c1b (patch)
tree03703fe42339a9e04c76007acf3381798152095c /eval.c
parentffb7aaebc24ee9db3ac6c976a0536e52b91735c7 (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
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/eval.c b/eval.c
index 75d0c3951a..8b78640d90 100644
--- a/eval.c
+++ b/eval.c
@@ -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;