aboutsummaryrefslogtreecommitdiff
path: root/lang/lua53
diff options
context:
space:
mode:
authorThomas Zander <riggs@FreeBSD.org>2017-11-11 12:48:53 +0000
committerThomas Zander <riggs@FreeBSD.org>2017-11-11 12:48:53 +0000
commit0779926ea368df5c7bd2b8d7e6ed4e5f1d3e6235 (patch)
tree90b97f2f7669b279540c46818d8abd948124464a /lang/lua53
parent880775a30ded7bceb516781bc41ce00e4014f1cb (diff)
downloadports-0779926ea368df5c7bd2b8d7e6ed4e5f1d3e6235.tar.gz
ports-0779926ea368df5c7bd2b8d7e6ed4e5f1d3e6235.zip
Fix multiple runtime errors and crashes in lua 5.3.4
Details - Import upstream patches for known runtime errors and crashes in lua 5.3.4 Details, see https://www.lua.org/bugs.html in the section on version 5.3.4 PR: 222581 Submitted by: russ.haley@gmail.com Approved by: maintainer timeout MFH: 2017Q4
Notes
Notes: svn path=/head/; revision=453971
Diffstat (limited to 'lang/lua53')
-rw-r--r--lang/lua53/Makefile1
-rw-r--r--lang/lua53/files/patch-src__ldebug.c10
-rw-r--r--lang/lua53/files/patch-src__lgc.c13
-rw-r--r--lang/lua53/files/patch-src__lparser.c11
4 files changed, 35 insertions, 0 deletions
diff --git a/lang/lua53/Makefile b/lang/lua53/Makefile
index 6a02aa4010df..b2760116266d 100644
--- a/lang/lua53/Makefile
+++ b/lang/lua53/Makefile
@@ -3,6 +3,7 @@
PORTNAME= lua
PORTVERSION= 5.3.4
+PORTREVISION= 1
CATEGORIES= lang
MASTER_SITES= http://www.lua.org/ftp/
PKGNAMESUFFIX= 53
diff --git a/lang/lua53/files/patch-src__ldebug.c b/lang/lua53/files/patch-src__ldebug.c
new file mode 100644
index 000000000000..de2c9e317d64
--- /dev/null
+++ b/lang/lua53/files/patch-src__ldebug.c
@@ -0,0 +1,10 @@
+--- src/ldebug.c.orig 2016-10-19 12:32:10 UTC
++++ src/ldebug.c
+@@ -653,6 +653,7 @@ l_noret luaG_runerror (lua_State *L, const char *fmt,
+ CallInfo *ci = L->ci;
+ const char *msg;
+ va_list argp;
++ luaC_checkGC(L); /* error message uses memory */
+ va_start(argp, fmt);
+ msg = luaO_pushvfstring(L, fmt, argp); /* format message */
+ va_end(argp);
diff --git a/lang/lua53/files/patch-src__lgc.c b/lang/lua53/files/patch-src__lgc.c
new file mode 100644
index 000000000000..0efcbc0effd0
--- /dev/null
+++ b/lang/lua53/files/patch-src__lgc.c
@@ -0,0 +1,13 @@
+--- src/lgc.c.orig 2016-12-22 13:08:50 UTC
++++ src/lgc.c
+@@ -643,8 +643,9 @@ static void clearkeys (global_State *g, GCObject *l, G
+ for (n = gnode(h, 0); n < limit; n++) {
+ if (!ttisnil(gval(n)) && (iscleared(g, gkey(n)))) {
+ setnilvalue(gval(n)); /* remove value ... */
+- removeentry(n); /* and remove entry from table */
+ }
++ if (ttisnil(gval(n))) /* is entry empty? */
++ removeentry(n); /* remove entry from table */
+ }
+ }
+ }
diff --git a/lang/lua53/files/patch-src__lparser.c b/lang/lua53/files/patch-src__lparser.c
new file mode 100644
index 000000000000..40ac13b86ac4
--- /dev/null
+++ b/lang/lua53/files/patch-src__lparser.c
@@ -0,0 +1,11 @@
+--- src/lparser.c.orig 2016-08-01 19:51:24 UTC
++++ src/lparser.c
+@@ -1392,7 +1392,7 @@ static void test_then_block (LexState *ls, int *escape
+ luaK_goiffalse(ls->fs, &v); /* will jump to label if condition is true */
+ enterblock(fs, &bl, 0); /* must enter block before 'goto' */
+ gotostat(ls, v.t); /* handle goto/break */
+- skipnoopstat(ls); /* skip other no-op statements */
++ while (testnext(ls, ';')) {} /* skip semicolons */
+ if (block_follow(ls, 0)) { /* 'goto' is the entire block? */
+ leaveblock(fs);
+ return; /* and that is it */