summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vm_args.c5
1 files changed, 4 insertions, 1 deletions
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);
}