diff options
author | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-09-23 11:46:33 +0000 |
---|---|---|
committer | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-09-23 11:46:33 +0000 |
commit | a463ab1f0536e24c72b700945203ef4685406f55 (patch) | |
tree | 97d7228c670ed87e3c39b77f7d96b97503bd170d /vm_method.c | |
parent | 0b5a4e68c3c577fbf807cdb81d5b69bb2901a4c9 (diff) |
* eval.c (rb_mod_refine): refine modules as well.
[ruby-core:76199] [Feature #12534]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_method.c')
-rw-r--r-- | vm_method.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/vm_method.c b/vm_method.c index b5a6f538d0..c7417de455 100644 --- a/vm_method.c +++ b/vm_method.c @@ -439,13 +439,17 @@ make_method_entry_refined(VALUE owner, rb_method_entry_t *me) } else { struct { - const struct rb_method_entry_struct *orig_me; + struct rb_method_entry_struct *orig_me; VALUE owner; } refined; rb_vm_check_redefinition_opt_method(me, me->owner); - refined.orig_me = rb_method_entry_clone(me); + refined.orig_me = + rb_method_entry_alloc(me->called_id, me->owner, + me->defined_class || owner, + method_definition_addref(me->def)); + METHOD_ENTRY_FLAGS_COPY(refined.orig_me, me); refined.owner = owner; method_definition_set(me, method_definition_create(VM_METHOD_TYPE_REFINED, me->called_id), (void *)&refined); |