From 430b88e65390aaa6867e91b1c467facd0d0e21b7 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 17 Aug 2007 16:12:03 +0000 Subject: * eval.c (frame_func_id): return proper method ID. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@13082 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 1729079d6..164703636 100644 --- a/eval.c +++ b/eval.c @@ -1612,12 +1612,19 @@ frame_func_id(rb_control_frame_t *cfp) if (!iseq) { return cfp->method_id; } - else if (RUBY_VM_IFUNC_P(iseq)) { - return rb_intern(""); - } - else { - return rb_intern(RSTRING_PTR(iseq->name)); + while (iseq) { + if (RUBY_VM_IFUNC_P(iseq)) { + return rb_intern(""); + } + if (iseq->defined_method_id) { + return iseq->defined_method_id; + } + if (iseq->local_iseq == iseq) { + break; + } + iseq = iseq->parent_iseq; } + return 0; } ID -- cgit