From: Mike Pall Date: Sat, 27 Dec 2014 05:08:36 +0000 (+0100) Subject: DynASM/ARM: Fix rollback for variant templates. X-Git-Tag: v2.0.4~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=db7cb5ab0ebf15f60e7b23e8edce95707fc451b1;p=thirdparty%2FLuaJIT.git DynASM/ARM: Fix rollback for variant templates. --- diff --git a/dynasm/dasm_arm.lua b/dynasm/dasm_arm.lua index 3aa8dead..d5078f7e 100644 --- a/dynasm/dasm_arm.lua +++ b/dynasm/dasm_arm.lua @@ -929,13 +929,16 @@ map_op[".template__"] = function(params, template, nparams) -- A single opcode needs a maximum of 3 positions. if secpos+3 > maxsecpos then wflush() end local pos = wpos() - local apos, spos = #actargs, secpos + local lpos, apos, spos = #actlist, #actargs, secpos local ok, err for t in gmatch(template, "[^|]+") do ok, err = pcall(parse_template, params, t, nparams, pos) if ok then return end secpos = spos + actlist[lpos+1] = nil + actlist[lpos+2] = nil + actlist[lpos+3] = nil actargs[apos+1] = nil actargs[apos+2] = nil actargs[apos+3] = nil