summaryrefslogtreecommitdiff
path: root/vm_method.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-11-17 10:39:30 (GMT)
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-11-17 10:39:30 (GMT)
commit551ae37ba3307fb982272413a02b3b94561bf39b (patch)
treef20e22b3f7cf7f063821c282f89adb30aaf84da6 /vm_method.c
parentc88764f369ddaa9661a0b0c4ca121232f7f1513e (diff)
* method.h (METHOD_ENTRY_COMPLEMENTED(_SET)): introduced to recognize
complemented method entries or not. There are some cases that callabe method entries do not have defined_class. * vm_method.c (rb_method_entry_complement_defined_class): use METHOD_ENTRY_COMPLEMENTED_SET(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52617 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_method.c')
-rw-r--r--vm_method.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/vm_method.c b/vm_method.c
index 657fbbd..685e31f 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -160,7 +160,7 @@ rb_method_definition_release(rb_method_definition_t *def, int complemented)
void
rb_free_method_entry(const rb_method_entry_t *me)
{
- rb_method_definition_release(me->def, RB_TYPE_P(me->owner, T_MODULE) && RB_TYPE_P(me->defined_class, T_ICLASS));
+ rb_method_definition_release(me->def, METHOD_ENTRY_COMPLEMENTED(me));
}
static inline rb_method_entry_t *search_method(VALUE klass, ID id, VALUE *defined_class_ptr);
@@ -400,9 +400,9 @@ rb_method_entry_complement_defined_class(const rb_method_entry_t *src_me, VALUE
rb_method_entry_t *me = rb_method_entry_alloc(src_me->called_id, src_me->owner, defined_class,
method_definition_addref_complement(src_me->def));
METHOD_ENTRY_FLAGS_COPY(me, src_me);
+ METHOD_ENTRY_COMPLEMENTED_SET(me);
VM_ASSERT(RB_TYPE_P(me->owner, T_MODULE));
- VM_ASSERT(RB_TYPE_P(me->defined_class, T_ICLASS));
return (rb_callable_method_entry_t *)me;
}