diff options
Diffstat (limited to 'package/lua/lua-bug3-boolean_expression.patch')
| -rw-r--r-- | package/lua/lua-bug3-boolean_expression.patch | 48 | 
1 files changed, 48 insertions, 0 deletions
| diff --git a/package/lua/lua-bug3-boolean_expression.patch b/package/lua/lua-bug3-boolean_expression.patch new file mode 100644 index 000000000..f04eb8507 --- /dev/null +++ b/package/lua/lua-bug3-boolean_expression.patch @@ -0,0 +1,48 @@ +--- 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; + | 
