diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-02-01 14:33:28 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-02-01 14:33:28 +0900 |
| commit | bd6b48fa3b352bbcb97463dcb95e30db37bff2e4 (patch) | |
| tree | 0a38d6fa28df10d4e9d667e587c752a80046981e | |
| parent | d0ba7b95a94db0b695111433f4f309e4349b8100 (diff) | |
| download | mruby-bd6b48fa3b352bbcb97463dcb95e30db37bff2e4.tar.gz mruby-bd6b48fa3b352bbcb97463dcb95e30db37bff2e4.zip | |
Copy `iv` table with `#prepend`; fix #5309
In addition, stop eager allocation of `mt` table.
| -rw-r--r-- | src/class.c | 3 |
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; } |
