diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-02-15 16:17:38 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-02-15 16:17:38 +0000 |
commit | 3b9fa79f62fa53639fe93a616ca96f60b9d164af (patch) | |
tree | 04c5e2c722812bed43c59de82310da3f2228af7f /eval.c | |
parent | 2d88403b15af0113a93345dc300a3573b3b70ec0 (diff) |
* eval.c (backtrace): frame->orig_func may not be initialized.
[ruby-core:07367]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9942 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 13 |
1 files changed, 6 insertions, 7 deletions
@@ -1182,7 +1182,7 @@ error_pos() { ruby_set_current_source(); if (ruby_sourcefile) { - if (ruby_frame->orig_func) { + if (ruby_frame->last_func) { warn_printf("%s:%d:in `%s'", ruby_sourcefile, ruby_sourceline, rb_id2name(ruby_frame->orig_func)); } @@ -1679,7 +1679,6 @@ rb_eval_string_wrap(str, state) rb_extend_object(ruby_top_self, ruby_wrapper); PUSH_FRAME(); ruby_frame->last_func = 0; - ruby_frame->orig_func = 0; ruby_frame->last_class = 0; ruby_frame->self = self; PUSH_CREF(ruby_wrapper); @@ -1821,7 +1820,6 @@ rb_eval_cmd(cmd, arg, level) ruby_scope = top_scope; PUSH_FRAME(); ruby_frame->last_func = 0; - ruby_frame->orig_func = 0; ruby_frame->last_class = 0; ruby_frame->self = ruby_top_self; PUSH_CREF(ruby_wrapper ? ruby_wrapper : rb_cObject); @@ -2307,7 +2305,7 @@ is_defined(self, node, buf) switch (nd_type(node)) { case NODE_SUPER: case NODE_ZSUPER: - if (ruby_frame->orig_func == 0) return 0; + if (ruby_frame->last_func == 0) return 0; else if (ruby_frame->last_class == 0) return 0; val = ruby_frame->last_class; if (rb_method_boundp(RCLASS(val)->super, ruby_frame->orig_func, 0)) { @@ -3457,7 +3455,7 @@ rb_eval(self, n) TMP_PROTECT; if (ruby_frame->last_class == 0) { - if (ruby_frame->orig_func) { + if (ruby_frame->last_func) { rb_name_error(ruby_frame->last_func, "superclass method `%s' disabled", rb_id2name(ruby_frame->orig_func)); @@ -6177,7 +6175,7 @@ backtrace(lev) } if (lev < 0) { ruby_set_current_source(); - if (frame->orig_func) { + if (frame->last_func) { snprintf(buf, BUFSIZ, "%s:%d:in `%s'", ruby_sourcefile, ruby_sourceline, rb_id2name(frame->orig_func)); @@ -6201,7 +6199,7 @@ backtrace(lev) } } for (; frame && (n = frame->node); frame = frame->prev) { - if (frame->prev && frame->prev->orig_func) { + if (frame->prev && frame->prev->last_func) { if (frame->prev->node == n) continue; snprintf(buf, BUFSIZ, "%s:%d:in `%s'", n->nd_file, nd_line(n), @@ -8225,6 +8223,7 @@ rb_f_binding(self) if (ruby_frame->prev) { data->frame.last_func = ruby_frame->prev->last_func; data->frame.last_class = ruby_frame->prev->last_class; + data->frame.orig_func = ruby_frame->prev->orig_func; } if (data->iter) { |