diff options
Diffstat (limited to 'lvm.c')
-rw-r--r-- | lvm.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -1746,14 +1746,13 @@ void luaV_execute (lua_State *L, CallInfo *ci) { | |||
1746 | Protect(luaD_call(L, ra + 4, GETARG_C(i))); /* do the call */ | 1746 | Protect(luaD_call(L, ra + 4, GETARG_C(i))); /* do the call */ |
1747 | updatestack(ci); /* stack may have changed */ | 1747 | updatestack(ci); /* stack may have changed */ |
1748 | i = *(pc++); /* go to next instruction */ | 1748 | i = *(pc++); /* go to next instruction */ |
1749 | ra += 2; /* adjust for next instruction */ | ||
1750 | lua_assert(GET_OPCODE(i) == OP_TFORLOOP && ra == RA(i)); | 1749 | lua_assert(GET_OPCODE(i) == OP_TFORLOOP && ra == RA(i)); |
1751 | goto l_tforloop; | 1750 | goto l_tforloop; |
1752 | } | 1751 | } |
1753 | vmcase(OP_TFORLOOP) { | 1752 | vmcase(OP_TFORLOOP) { |
1754 | l_tforloop: | 1753 | l_tforloop: |
1755 | if (!ttisnil(s2v(ra + 2))) { /* continue loop? */ | 1754 | if (!ttisnil(s2v(ra + 4))) { /* continue loop? */ |
1756 | setobjs2s(L, ra, ra + 2); /* save control variable */ | 1755 | setobjs2s(L, ra + 2, ra + 4); /* save control variable */ |
1757 | pc -= GETARG_Bx(i); /* jump back */ | 1756 | pc -= GETARG_Bx(i); /* jump back */ |
1758 | } | 1757 | } |
1759 | vmbreak; | 1758 | vmbreak; |