diff --git a/src/cs_gen.cc b/src/cs_gen.cc index d871b38..ddde6f3 100644 --- a/src/cs_gen.cc +++ b/src/cs_gen.cc @@ -583,10 +583,6 @@ static void compileblockmain(codegen_state &gs, int wordtype) { throw error{gs.ts, "too many @s"}; return; } - if (concs + 2 > MAX_ARGUMENTS) { - gs.code.push_back(BC_INST_CONC_W | BC_RET_STRING | (concs << 8)); - concs = 1; - } if (compileblockstr(gs, start, esc)) { concs++; } diff --git a/src/cs_vm.cc b/src/cs_vm.cc index 7b9a13c..5e1cf34 100644 --- a/src/cs_vm.cc +++ b/src/cs_vm.cc @@ -917,7 +917,8 @@ std::uint32_t *vm_exec( ((op & BC_INST_OP_MASK) == BC_INST_CONC) ? " " : "" ); args.resize(args.size() - numconc, any_value{cs}); - force_arg(args.emplace_back(cs), op & BC_INST_RET_MASK); + args.emplace_back(cs).set_str(buf); + force_arg(args.back(), op & BC_INST_RET_MASK); continue; }