From ed22c21a8f4e0c98045efb6de245fba79ec7e961 Mon Sep 17 00:00:00 2001 From: nagachika Date: Mon, 30 Mar 2015 15:45:35 +0000 Subject: merge revision(s) r49184: [Backport #10707] * vm_method.c (rb_method_entry): if no super class, no original method entry. [ruby-core:67389] [Bug #10707] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@50131 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm_method.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'vm_method.c') diff --git a/vm_method.c b/vm_method.c index 84b4e86734..a8b524d2bc 100644 --- a/vm_method.c +++ b/vm_method.c @@ -639,12 +639,17 @@ get_original_method_entry(VALUE refinements, const rb_method_entry_t *me, VALUE *defined_class_ptr) { + VALUE super; + if (me->def->body.orig_me) { return me->def->body.orig_me; } + else if (!(super = RCLASS_SUPER(me->klass))) { + return 0; + } else { rb_method_entry_t *tmp_me; - tmp_me = rb_method_entry(RCLASS_SUPER(me->klass), me->called_id, + tmp_me = rb_method_entry(super, me->called_id, defined_class_ptr); return rb_resolve_refined_method(refinements, tmp_me, defined_class_ptr); -- cgit v1.2.3