diff options
Diffstat (limited to 'compile.c')
-rw-r--r-- | compile.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -3267,7 +3267,7 @@ setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, unsigned int *flag, r switch (nd_type(argn)) { case NODE_SPLAT: { COMPILE(args, "args (splat)", argn->nd_head); - ADD_INSN1(args, nd_line(argn), splatarray, Qfalse); + ADD_INSN1(args, nd_line(argn), splatarray, nsplat ? Qtrue : Qfalse); argc = INT2FIX(1); nsplat++; *flag |= VM_CALL_ARGS_SPLAT; @@ -3281,7 +3281,7 @@ setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, unsigned int *flag, r INIT_ANCHOR(tmp); COMPILE(tmp, "args (cat: splat)", argn->nd_body); if (nd_type(argn) == NODE_ARGSCAT) { - ADD_INSN1(tmp, nd_line(argn), splatarray, Qfalse); + ADD_INSN1(tmp, nd_line(argn), splatarray, nsplat ? Qtrue : Qfalse); } else { ADD_INSN1(tmp, nd_line(argn), newarray, INT2FIX(1)); |