From ac65bab25f1eaaf70e1826a6937a74b3a55b521b Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Mon, 14 Aug 2017 15:33:14 -0300 Subject: jumps in 'for' loops don't need to be signed --- lvm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'lvm.c') diff --git a/lvm.c b/lvm.c index 18799be7..be4793d1 100644 --- a/lvm.c +++ b/lvm.c @@ -1,5 +1,5 @@ /* -** $Id: lvm.c,v 2.289 2017/06/29 15:38:41 roberto Exp roberto $ +** $Id: lvm.c,v 2.290 2017/07/07 16:34:32 roberto Exp roberto $ ** Lua virtual machine ** See Copyright Notice in lua.h */ @@ -1335,7 +1335,7 @@ void luaV_execute (lua_State *L) { lua_Integer idx = intop(+, ivalue(s2v(ra)), step); /* increment index */ lua_Integer limit = ivalue(s2v(ra + 1)); if ((0 < step) ? (idx <= limit) : (limit <= idx)) { - pc += GETARG_sBx(i); /* jump back */ + pc -= GETARG_Bx(i); /* jump back */ chgivalue(s2v(ra), idx); /* update internal index... */ setivalue(s2v(ra + 3), idx); /* ...and external index */ } @@ -1347,7 +1347,7 @@ void luaV_execute (lua_State *L) { idx = luai_numadd(L, idx, step); /* inc. index */ if (luai_numlt(0, step) ? luai_numle(idx, limit) : luai_numle(limit, idx)) { - pc += GETARG_sBx(i); /* jump back */ + pc -= GETARG_Bx(i); /* jump back */ chgfltvalue(s2v(ra), idx); /* update internal index... */ setfltvalue(s2v(ra + 3), idx); /* ...and external index */ } @@ -1381,7 +1381,7 @@ void luaV_execute (lua_State *L) { luaG_runerror(L, "'for' initial value must be a number"); setfltvalue(init, luai_numsub(L, ninit, nstep)); } - pc += GETARG_sBx(i); + pc += GETARG_Bx(i); vmbreak; } vmcase(OP_TFORCALL) { @@ -1401,7 +1401,7 @@ void luaV_execute (lua_State *L) { l_tforloop: if (!ttisnil(s2v(ra + 1))) { /* continue loop? */ setobjs2s(L, ra, ra + 1); /* save control variable */ - pc += GETARG_sBx(i); /* jump back */ + pc -= GETARG_Bx(i); /* jump back */ } vmbreak; } -- cgit v1.2.3-55-g6feb