diff options
Diffstat (limited to 'dev-lang/lua/files/5.1.4')
9 files changed, 183 insertions, 0 deletions
diff --git a/dev-lang/lua/files/5.1.4/01_all_boolean_expression.upstream.patch b/dev-lang/lua/files/5.1.4/01_all_boolean_expression.upstream.patch new file mode 100644 index 0000000..f04eb85 --- /dev/null +++ b/dev-lang/lua/files/5.1.4/01_all_boolean_expression.upstream.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; + diff --git a/dev-lang/lua/files/5.1.4/02_all_table.upstream.patch b/dev-lang/lua/files/5.1.4/02_all_table.upstream.patch new file mode 100644 index 0000000..9ffc1bb --- /dev/null +++ b/dev-lang/lua/files/5.1.4/02_all_table.upstream.patch @@ -0,0 +1,22 @@ +--- lua-5.1.4.orig/src/lvm.c	2007/12/28 15:32:23	2.63.1.3 ++++ lua-5.1.4/src/lvm.c	2009/07/01 20:36:59 +@@ -133,6 +133,7 @@ +  + void luaV_settable (lua_State *L, const TValue *t, TValue *key, StkId val) { +   int loop; ++  TValue temp; +   for (loop = 0; loop < MAXTAGLOOP; loop++) { +     const TValue *tm; +     if (ttistable(t)) {  /* `t' is a table? */ +@@ -152,7 +153,9 @@ +       callTM(L, tm, t, key, val); +       return; +     } +-    t = tm;  /* else repeat with `tm' */  ++    /* else repeat with `tm' */ ++    setobj(L, &temp, tm);  /* avoid pointing inside table (may rehash) */ ++    t = &temp; +   } +   luaG_runerror(L, "loop in settable"); + } + diff --git a/dev-lang/lua/files/5.1.4/03_all_debug_getfenv.upstream.patch b/dev-lang/lua/files/5.1.4/03_all_debug_getfenv.upstream.patch new file mode 100644 index 0000000..fce4d47 --- /dev/null +++ b/dev-lang/lua/files/5.1.4/03_all_debug_getfenv.upstream.patch @@ -0,0 +1,10 @@ +--- lua-5.1.4.orig/src/ldblib.c	2007/12/28 15:32:23	2.63.1.3 ++++ lua-5.1.4/src/ldblib.c	2010/02/23 12:36:59 +@@ -45,6 +45,7 @@ +  +  + static int db_getfenv (lua_State *L) { ++  luaL_checkany(L, 1); +   lua_getfenv(L, 1); +   return 1; + } diff --git a/dev-lang/lua/files/5.1.4/04_all_gc_performance.upstream.patch b/dev-lang/lua/files/5.1.4/04_all_gc_performance.upstream.patch new file mode 100644 index 0000000..3c78525 --- /dev/null +++ b/dev-lang/lua/files/5.1.4/04_all_gc_performance.upstream.patch @@ -0,0 +1,14 @@ +--- lua-5.1.4.orig/src/llex.c	2007/12/28 15:32:23	2.63.1.3 ++++ lua-5.1.4/src/llex.c	2010/02/23 12:36:59 +@@ -118,8 +118,10 @@ +   lua_State *L = ls->L; +   TString *ts = luaS_newlstr(L, str, l); +   TValue *o = luaH_setstr(L, ls->fs->h, ts);  /* entry for `str' */ +-  if (ttisnil(o)) ++  if (ttisnil(o)) { +     setbvalue(o, 1);  /* make sure `str' will not be collected */ ++    luaC_checkGC(L); ++  } +   return ts; + } +  diff --git a/dev-lang/lua/files/5.1.4/05_all_string_format.upstream.patch b/dev-lang/lua/files/5.1.4/05_all_string_format.upstream.patch new file mode 100644 index 0000000..5127507 --- /dev/null +++ b/dev-lang/lua/files/5.1.4/05_all_string_format.upstream.patch @@ -0,0 +1,21 @@ +--- lua-5.1.4.orig/src/lstrlib.c	2008/07/11 17:27:21	1.132.1.4 ++++ lua-5.1.4/src/lstrlib.c	2010/05/14 15:12:53 +@@ -754,6 +754,7 @@ +  +  + static int str_format (lua_State *L) { ++  int top = lua_gettop(L); +   int arg = 1; +   size_t sfl; +   const char *strfrmt = luaL_checklstring(L, arg, &sfl); +@@ -768,7 +769,8 @@ +     else { /* format item */ +       char form[MAX_FORMAT];  /* to store the format (`%...') */ +       char buff[MAX_ITEM];  /* to store the formatted item */ +-      arg++; ++      if (++arg > top) ++        luaL_argerror(L, arg, "no value"); +       strfrmt = scanformat(L, strfrmt, form); +       switch (*strfrmt++) { +         case 'c': { + diff --git a/dev-lang/lua/files/5.1.4/06_all_io_read.upstream.patch b/dev-lang/lua/files/5.1.4/06_all_io_read.upstream.patch new file mode 100644 index 0000000..94634c5 --- /dev/null +++ b/dev-lang/lua/files/5.1.4/06_all_io_read.upstream.patch @@ -0,0 +1,15 @@ +--- lua-5.1.4.orig/src/liolib.c	2008/01/18 17:47:43	2.73.1.3 ++++ lua-5.1.4/src/liolib.c	2010/05/14 15:29:29 +@@ -276,7 +276,10 @@ +     lua_pushnumber(L, d); +     return 1; +   } +-  else return 0;  /* read fails */ ++  else { ++    lua_pushnil(L);  /* "result" to be removed */ ++    return 0;  /* read fails */ ++  } + } +  +  + diff --git a/dev-lang/lua/files/5.1.4/07_all_boolean_expression.upstream.patch b/dev-lang/lua/files/5.1.4/07_all_boolean_expression.upstream.patch new file mode 100644 index 0000000..956e966 --- /dev/null +++ b/dev-lang/lua/files/5.1.4/07_all_boolean_expression.upstream.patch @@ -0,0 +1,30 @@ +--- 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 +@@ -549,13 +549,6 @@ +       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; +@@ -579,13 +572,6 @@ +       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; diff --git a/dev-lang/lua/files/5.1.4/08_all_metatable.upstream.patch b/dev-lang/lua/files/5.1.4/08_all_metatable.upstream.patch new file mode 100644 index 0000000..b74bafb --- /dev/null +++ b/dev-lang/lua/files/5.1.4/08_all_metatable.upstream.patch @@ -0,0 +1,10 @@ +--- lua-5.1.4.orig/src/lvm.c	2009/07/01 21:10:33	2.63.1.4 ++++ lua-5.1.4/src/lvm.c	2011/08/17 20:36:28 +@@ -142,6 +142,7 @@ +       if (!ttisnil(oldval) ||  /* result is no nil? */ +           (tm = fasttm(L, h->metatable, TM_NEWINDEX)) == NULL) { /* or no TM? */ +         setobj2t(L, oldval, val); ++        h->flags = 0; +         luaC_barriert(L, h, val); +         return; +       } diff --git a/dev-lang/lua/files/5.1.4/09_all_prototype_collection.upstream.patch b/dev-lang/lua/files/5.1.4/09_all_prototype_collection.upstream.patch new file mode 100644 index 0000000..000f78c --- /dev/null +++ b/dev-lang/lua/files/5.1.4/09_all_prototype_collection.upstream.patch @@ -0,0 +1,13 @@ +--- lua-5.1.4.orig/src/lparser.c	2007/12/28 15:32:23	2.42.1.3 ++++ lua-5.1.4/src/lparser.c	2011/10/17 13:10:43 +@@ -374,9 +374,9 @@ +   lua_assert(luaG_checkcode(f)); +   lua_assert(fs->bl == NULL); +   ls->fs = fs->prev; +-  L->top -= 2;  /* remove table and prototype from the stack */ +   /* last token read was anchored in defunct function; must reanchor it */ +   if (fs) anchor_token(ls); ++  L->top -= 2;  /* remove table and prototype from the stack */ + } +  +   | 
