From eff784082b8b8874c7c2c540174252675dc02ddf Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 18 Dec 2018 15:06:20 +0000 Subject: [PATCH] Freeze and hide callback arguments holder git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm_args.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vm_args.c b/vm_args.c index af192da979..bea38078ec 100644 --- a/vm_args.c +++ b/vm_args.c @@ -893,7 +893,10 @@ vm_caller_setup_arg_block(const rb_execution_context_t *ec, rb_control_frame_t * VALUE func = rb_hash_lookup(ref, block_code); if (NIL_P(func)) { /* TODO: limit cached funcs */ - VALUE callback_arg = rb_ary_new_from_args(2, block_code, ref); + VALUE callback_arg = rb_ary_tmp_new(2); + RARRAY_ASET(callback_arg, 0, block_code); + RARRAY_ASET(callback_arg, 1, ref); + OBJ_FREEZE_RAW(callback_arg); func = rb_func_proc_new(refine_sym_proc_call, callback_arg); rb_hash_aset(ref, block_code, func); }