From c7d2eaa3e84494245986066a4ffdc9a7968cb6ff Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 20 Aug 2022 12:58:17 +0900 Subject: [PATCH] Revert "vm.c (mrb_funcall_with_block): avoid use of MRB_METHOD_CFUNC_P()." This reverts commit c28ac75a8728efbb08f1a818f2291fc53b1aa5f0. This change caused SEGV in the case like the following: ``` class C class << self attr_accessor :a alias :const_missing :a= end end p C::CONST ``` --- src/vm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vm.c b/src/vm.c index 598e87229..23ed1f8dc 100644 --- a/src/vm.c +++ b/src/vm.c @@ -664,7 +664,7 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, mrb_int argc ci->mid = mid; ci->proc = MRB_METHOD_PROC_P(m) ? MRB_METHOD_PROC(m) : NULL; - if (ci->proc == NULL) { + if (MRB_METHOD_CFUNC_P(m)) { ci->stack[0] = self; val = MRB_METHOD_CFUNC(m)(mrb, self); cipop(mrb);