summaryrefslogtreecommitdiff
path: root/vm_method.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-01-19 06:46:29 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-01-19 06:46:29 +0000
commit4949acb2a1416fbc847961bc3b90ffd1705c7565 (patch)
treeecc1666c29dc77a8170da1a447e79547cf001ee9 /vm_method.c
parent6222c2081d10de3d8f0a5d44f44f9db1dfdc4423 (diff)
merge revision(s) 49184: [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_2@49331 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_method.c')
-rw-r--r--vm_method.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/vm_method.c b/vm_method.c
index e93bb71b4e..a406612ed9 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -668,12 +668,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);