From bd6b48fa3b352bbcb97463dcb95e30db37bff2e4 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 1 Feb 2021 14:33:28 +0900 Subject: Copy `iv` table with `#prepend`; fix #5309 In addition, stop eager allocation of `mt` table. --- src/class.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/class.c') diff --git a/src/class.c b/src/class.c index ac8cf423e..09e52d24a 100644 --- a/src/class.c +++ b/src/class.c @@ -1497,7 +1497,8 @@ mrb_prepend_module(mrb_state *mrb, struct RClass *c, struct RClass *m) origin->super = c->super; c->super = origin; origin->mt = c->mt; - c->mt = mt_new(mrb); + c->mt = NULL; + origin->iv = c->iv; mrb_field_write_barrier(mrb, (struct RBasic*)c, (struct RBasic*)origin); c->flags |= MRB_FL_CLASS_IS_PREPENDED; } -- cgit v1.2.3