From 43fdce50197beb6a312fe93cc2f64298ec78de64 Mon Sep 17 00:00:00 2001 From: dearblue Date: Sat, 30 Jul 2022 22:34:50 +0900 Subject: [PATCH] Protected `proc` objects given by `OP_DEF` on registers If a GC occurs in `mrb_calloc()` called by `mt_rehash()` inside `mrb_define_method_raw(), the `proc` may be destroyed. --- mrbgems/mruby-compiler/core/codegen.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index f48867162..c1292e869 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -3763,6 +3763,7 @@ codegen(codegen_scope *s, node *tree, int val) genop_1(s, OP_SCLASS, cursp()); push(); genop_2(s, OP_METHOD, cursp(), idx); + push(); pop(); pop(); genop_2(s, OP_DEF, cursp(), sym); if (val) push();