Commit 55bdb7d0 authored by François Perrad's avatar François Perrad Committed by Thomas Petazzoni
Browse files

lua: bump version to 5.1.5



[thomas.petazzoni@free-electrons.com: rewrote the patch, which was
corrupted in the original submission. Used quilt to refresh the Lua
patches, so that the version numbers are no longer present in the file
names]

Signed-off-by: default avatarFrancois Perrad <francois.perrad@gadz.org>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent 830c5868
Loading
Loading
Loading
Loading
+0 −48
Original line number Diff line number Diff line
--- 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;

package/lua/lua-bug4-table.patch

deleted100644 → 0
+0 −22
Original line number Diff line number Diff line
--- 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");
 }
+0 −10
Original line number Diff line number Diff line
--- 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;
 }
+0 −14
Original line number Diff line number Diff line
--- 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;
 }
 
+0 −20
Original line number Diff line number Diff line
--- 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': {
Loading