diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-08-24 06:32:40 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-08-24 06:32:40 +0000 |
commit | 4a70a618b00908b1e85947f76b876d2b0d247806 (patch) | |
tree | 8f1daa6a0398c741cf9ba4bdc670b8d2a855bd98 /eval.c | |
parent | 9ceb358711a1e85ffec60f8a4d4894c35adb62a0 (diff) | |
download | ruby-4a70a618b00908b1e85947f76b876d2b0d247806.tar.gz ruby-4a70a618b00908b1e85947f76b876d2b0d247806.tar.xz ruby-4a70a618b00908b1e85947f76b876d2b0d247806.zip |
* eval.c (call_trace_func): restore source file/line, as trace
function installed in required library with -r option can be
called while parsing. (ruby-bugs:PR#372)
* eval.c (module_setup): unused variable. [ruby-core:00358]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -2079,12 +2079,16 @@ call_trace_func(event, node, self, id, klass) { int state; struct FRAME *prev; - NODE *node_save = ruby_last_node; + NODE *node_save[2]; VALUE srcfile; if (!trace_func) return; if (tracing) return; + node_save[0] = ruby_last_node; + if (!(node_save[1] = ruby_current_node)) { + node_save[1] = NEW_NEWLINE(0); + } tracing = 1; prev = ruby_frame; PUSH_FRAME(); @@ -2120,7 +2124,9 @@ call_trace_func(event, node, self, id, klass) POP_FRAME(); tracing = 0; - ruby_last_node = node_save; + ruby_last_node = node_save[0]; + ruby_current_node = node_save[1]; + SET_CURRENT_SOURCE(); if (state) JUMP_TAG(state); } @@ -3424,7 +3430,6 @@ module_setup(module, n) int state; struct FRAME frame; VALUE result; /* OK */ - NODE * cnode = ruby_current_node; /* NOT IN USE, is it OK? */ TMP_PROTECT; frame = *ruby_frame; |