123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- --- lua-5.1.4.orig/src/lcode.c 2007/12/28 15:32:23 2.25.1.3
- +++ lua-5.1.4/src/lcode.c 2009/06/15 14:07:34
- @@ -544,15 +544,18 @@
- pc = NO_JUMP; /* always true; do nothing */
- break;
- }
- - case VFALSE: {
- - pc = luaK_jump(fs); /* always jump */
- - break;
- - }
- case VJMP: {
- invertjump(fs, e);
- pc = e->u.s.info;
- break;
- }
- + case VFALSE: {
- + if (!hasjumps(e)) {
- + pc = luaK_jump(fs); /* always jump */
- + break;
- + }
- + /* else go through */
- + }
- default: {
- pc = jumponcond(fs, e, 0);
- break;
- @@ -572,14 +575,17 @@
- pc = NO_JUMP; /* always false; do nothing */
- break;
- }
- - case VTRUE: {
- - pc = luaK_jump(fs); /* always jump */
- - break;
- - }
- case VJMP: {
- pc = e->u.s.info;
- break;
- }
- + case VTRUE: {
- + if (!hasjumps(e)) {
- + pc = luaK_jump(fs); /* always jump */
- + break;
- + }
- + /* else go through */
- + }
- default: {
- pc = jumponcond(fs, e, 1);
- break;
|