summaryrefslogtreecommitdiff
path: root/vm_method.c
diff options
context:
space:
mode:
Diffstat (limited to 'vm_method.c')
-rw-r--r--vm_method.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/vm_method.c b/vm_method.c
index 027042b79c..04b62f2c9d 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -210,12 +210,18 @@ rb_add_method_def(VALUE klass, ID mid, rb_method_type_t type, rb_method_definiti
rb_id2name(old_def->original_id));
}
}
- rb_free_method_entry(old_me);
+
+ /* FIXME: this avoid to free methods used in cfp, but reusing may cause
+ * another problem when the usage is changed.
+ */
+ me = old_me;
+ }
+ else {
+ me = ALLOC(rb_method_entry_t);
}
rb_clear_cache_by_id(mid);
- me = ALLOC(rb_method_entry_t);
me->flag = NOEX_WITH_SAFE(noex);
me->called_id = mid;
me->klass = klass;