summaryrefslogtreecommitdiffhomepage
path: root/src/class.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-02-01 14:33:28 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-02-01 14:33:28 +0900
commitbd6b48fa3b352bbcb97463dcb95e30db37bff2e4 (patch)
tree0a38d6fa28df10d4e9d667e587c752a80046981e /src/class.c
parentd0ba7b95a94db0b695111433f4f309e4349b8100 (diff)
downloadmruby-bd6b48fa3b352bbcb97463dcb95e30db37bff2e4.tar.gz
mruby-bd6b48fa3b352bbcb97463dcb95e30db37bff2e4.zip
Copy `iv` table with `#prepend`; fix #5309
In addition, stop eager allocation of `mt` table.
Diffstat (limited to 'src/class.c')
-rw-r--r--src/class.c3
1 files changed, 2 insertions, 1 deletions
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;
}