From fd444d72db6d892bdfea781426e2f716f08da459 Mon Sep 17 00:00:00 2001
From: Marko Lindqvist <cazfi74@gmail.com>
Date: Tue, 1 Sep 2026 00:32:27 +0300
Subject: [PATCH 29/29] Update included lua to version 5.4.9

See RM #2196

Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
---
 dependencies/lua-5.4/Makefile.am              |   4 ++--
 dependencies/lua-5.4/README                   |   2 +-
 dependencies/lua-5.4/Version.txt              |   8 +++----
 dependencies/lua-5.4/doc/OSIApproved.png      | Bin 0 -> 10427 bytes
 .../lua-5.4/doc/OSIApproved_100X125.png       | Bin 12127 -> 0 bytes
 .../lua-5.4/doc/{logo.gif => logo.png}        | Bin
 dependencies/lua-5.4/doc/readme.html          |  16 ++++++-------
 dependencies/lua-5.4/src/lapi.c               |   1 +
 dependencies/lua-5.4/src/lauxlib.c            |  17 ++++++++++++--
 dependencies/lua-5.4/src/ldo.c                |  21 +++++++++++++++++-
 dependencies/lua-5.4/src/ldo.h                |   1 +
 dependencies/lua-5.4/src/lgc.c                |   7 +++---
 dependencies/lua-5.4/src/lstate.c             |  17 +++++++++-----
 dependencies/lua-5.4/src/lstate.h             |   2 +-
 dependencies/lua-5.4/src/lstrlib.c            |   3 +--
 dependencies/lua-5.4/src/lua.h                |   8 +++----
 dependencies/lua-5.4/src/lutf8lib.c           |   4 +++-
 dependencies/lua-5.4/src/lvm.c                |   7 +++++-
 18 files changed, 82 insertions(+), 36 deletions(-)
 create mode 100644 dependencies/lua-5.4/doc/OSIApproved.png
 delete mode 100644 dependencies/lua-5.4/doc/OSIApproved_100X125.png
 rename dependencies/lua-5.4/doc/{logo.gif => logo.png} (100%)

diff --git a/dependencies/lua-5.4/Makefile.am b/dependencies/lua-5.4/Makefile.am
index 2b96942f27..0d9c5659db 100644
--- a/dependencies/lua-5.4/Makefile.am
+++ b/dependencies/lua-5.4/Makefile.am
@@ -6,5 +6,5 @@ EXTRA_DIST = Version.txt \
 	freeciv_lua.patch \
 	doc/readme.html \
 	doc/lua.css \
-	doc/logo.gif \
-	doc/OSIApproved_100X125.png
+	doc/logo.png \
+	doc/OSIApproved.png
diff --git a/dependencies/lua-5.4/README b/dependencies/lua-5.4/README
index b251d296f6..da3d45b813 100644
--- a/dependencies/lua-5.4/README
+++ b/dependencies/lua-5.4/README
@@ -1,5 +1,5 @@
 
-This is Lua 5.4.8, released on 21 May 2025.
+This is Lua 5.4.9, released on 10 Aug 2026.
 
 For installation instructions, license details, and
 further information about Lua, see doc/readme.html.
diff --git a/dependencies/lua-5.4/Version.txt b/dependencies/lua-5.4/Version.txt
index 4162e110d7..390e3ed5c1 100644
--- a/dependencies/lua-5.4/Version.txt
+++ b/dependencies/lua-5.4/Version.txt
@@ -1,10 +1,10 @@
-Sources here are from lua-5.4.8
-(http://www.lua.org/ftp/lua-5.4.8.tar.gz)
+Sources here are from lua-5.4.9
+(http://www.lua.org/ftp/lua-5.4.9.tar.gz)
 
 Upstream bug fixes from https://www.lua.org/bugs.html applied:
-1, 3
+-
 Upstream bug fixes not applicable to our tree:
-2
+-
 
 Not entire lua distribution directory hierarchy is included here, and
 some files needed for Freeciv usage have been added.
diff --git a/dependencies/lua-5.4/doc/OSIApproved.png b/dependencies/lua-5.4/doc/OSIApproved.png
new file mode 100644
index 0000000000000000000000000000000000000000..46f920ee2485db5dc0a3f8ff4f078afa9f650f3e
GIT binary patch
literal 10427
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
a4nY6^>5!RV_W*Q2QkK_{tB^7M{Qm$;%}o&i

literal 0
HcmV?d00001

diff --git a/dependencies/lua-5.4/doc/OSIApproved_100X125.png b/dependencies/lua-5.4/doc/OSIApproved_100X125.png
deleted file mode 100644
index 795f7a06ed5b32131e69f245f1e1e0f4fc22c5aa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12127
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
VZ4F2_C1L;o002ovPDHLkV1i#ac*Fnz

diff --git a/dependencies/lua-5.4/doc/logo.gif b/dependencies/lua-5.4/doc/logo.png
similarity index 100%
rename from dependencies/lua-5.4/doc/logo.gif
rename to dependencies/lua-5.4/doc/logo.png
diff --git a/dependencies/lua-5.4/doc/readme.html b/dependencies/lua-5.4/doc/readme.html
index a4eb59dd38..e4d4f209c2 100644
--- a/dependencies/lua-5.4/doc/readme.html
+++ b/dependencies/lua-5.4/doc/readme.html
@@ -29,7 +29,7 @@ tt, kbd, code {
 <BODY>
 
 <H1>
-<A HREF="https://www.lua.org/"><IMG SRC="logo.gif" ALT="Lua"></A>
+<A HREF="https://www.lua.org/"><IMG SRC="logo.png" ALT="Lua"></A>
 Welcome to Lua 5.4
 </H1>
 
@@ -86,8 +86,8 @@ form.
 You need to build it before using it.
 Building Lua should be straightforward
 because
-Lua is implemented in pure ANSI C and compiles unmodified in all known
-platforms that have an ANSI C compiler.
+Lua is implemented in pure ISO C and compiles unmodified in all known
+platforms that have an ISO C compiler.
 Lua also compiles unmodified as C++.
 The instructions given below for building Lua are for Unix-like platforms,
 such as Linux and macOS.
@@ -109,7 +109,7 @@ Here are the details.
 <OL>
 <LI>
 Open a terminal window and move to
-the top-level directory, which is named <TT>lua-5.4.8</TT>.
+the top-level directory, which is named <TT>lua-5.4.9</TT>.
 The <TT>Makefile</TT> there controls both the build process and the installation process.
 <P>
 <LI>
@@ -287,7 +287,7 @@ lists the
 <H2><A NAME="license">License</A></H2>
 <P>
 <A HREF="https://opensource.org/osd">
-<IMG SRC="OSIApproved_100X125.png" ALIGN="right" ALT="[Open Source Initiative Approved License]" STYLE="padding-left: 1em" WIDTH=50>
+<IMG SRC="OSIApproved.png" ALIGN="right" ALT="[Open Source Initiative Approved License]" STYLE="padding-left: 1em" WIDTH=50>
 </A>
 Lua is free software distributed under the terms of the
 <A HREF="https://opensource.org/license/mit">MIT license</A>
@@ -302,7 +302,7 @@ For details, see the
 <A HREF="https://www.lua.org/license.html">license page</A>.
 
 <BLOCKQUOTE STYLE="padding-bottom: 0em">
-Copyright &copy; 1994&ndash;2025 Lua.org, PUC-Rio.
+Copyright &copy; 1994&ndash;2026 Lua.org, PUC-Rio.
 
 <P>
 Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -329,10 +329,10 @@ THE SOFTWARE.
 
 <P CLASS="footer">
 Last update:
-Wed May 21 21:12:01 UTC 2025
+Wed Aug  5 21:42:45 UTC 2026
 </P>
 <!--
-Last change: revised for Lua 5.4.8
+Last change: revised for Lua 5.4.9
 -->
 
 </BODY>
diff --git a/dependencies/lua-5.4/src/lapi.c b/dependencies/lua-5.4/src/lapi.c
index 04e09cff7e..588ab33395 100644
--- a/dependencies/lua-5.4/src/lapi.c
+++ b/dependencies/lua-5.4/src/lapi.c
@@ -1089,6 +1089,7 @@ LUA_API int lua_load (lua_State *L, lua_Reader reader, void *data,
   ZIO z;
   int status;
   lua_lock(L);
+  luaC_checkGC(L);
   if (!chunkname) chunkname = "?";
   luaZ_init(L, &z, reader, data);
   status = luaD_protectedparser(L, &z, chunkname, mode);
diff --git a/dependencies/lua-5.4/src/lauxlib.c b/dependencies/lua-5.4/src/lauxlib.c
index 923105ed31..f9a4538436 100644
--- a/dependencies/lua-5.4/src/lauxlib.c
+++ b/dependencies/lua-5.4/src/lauxlib.c
@@ -501,12 +501,25 @@ static const luaL_Reg boxmt[] = {  /* box metamethods */
 };
 
 
+/*
+** Get/create metatable (MT) for boxes
+*/
+static void getBoxMT (lua_State *L) {
+  const char *BOXMT = "_UBOX*"; /* key for the metatable */
+  if (luaL_getmetatable(L, BOXMT) == LUA_TNIL) {  /* MT not created yet? */
+    luaL_newlibtable(L, boxmt);  /* create it */
+    luaL_setfuncs(L, boxmt, 0);  /* initialize it */
+    lua_copy(L, -1, -2);  /* change stack from nil,MT to MT,MT */
+    lua_setfield(L, LUA_REGISTRYINDEX, BOXMT);  /* store MT in the registry */
+  }
+}
+
+
 static void newbox (lua_State *L) {
   UBox *box = (UBox *)lua_newuserdatauv(L, sizeof(UBox), 0);
   box->box = NULL;
   box->bsize = 0;
-  if (luaL_newmetatable(L, "_UBOX*"))  /* creating metatable? */
-    luaL_setfuncs(L, boxmt, 0);  /* set its metamethods */
+  getBoxMT(L);
   lua_setmetatable(L, -2);
 }
 
diff --git a/dependencies/lua-5.4/src/ldo.c b/dependencies/lua-5.4/src/ldo.c
index 90f98f8d8a..eaa8553c71 100644
--- a/dependencies/lua-5.4/src/ldo.c
+++ b/dependencies/lua-5.4/src/ldo.c
@@ -205,6 +205,25 @@ l_noret luaD_errerr (lua_State *L) {
 }
 
 
+/*
+** Check whether stacks have enough space to run a simple function (such
+** as a finalizer): At least BASIC_STACK_SIZE in the Lua stack, two
+** available CallInfos, and two "slots" in the C stack.
+*/
+int luaD_checkminstack (lua_State *L) {
+  if (getCcalls(L) >= LUAI_MAXCCALLS - 2)
+    return 0;  /* not enough C-stack slots */
+  if (L->ci->next == NULL && luaE_extendCI(L, 0) == NULL)
+    return 0;  /* unable to allocate first ci */
+  if (L->ci->next->next == NULL && luaE_extendCI(L, 0) == NULL)
+    return 0;  /* unable to allocate second ci */
+  if (L->stack_last.p - L->top.p >= BASIC_STACK_SIZE)
+    return 1;  /* enough (BASIC_STACK_SIZE) free slots in the Lua stack */
+  else  /* try to grow stack to a size with enough free slots */
+    return luaD_growstack(L, BASIC_STACK_SIZE, 0);
+}
+
+
 /*
 ** Reallocate the stack to a new size, correcting all pointers into it.
 ** In ISO C, any pointer use after the pointer has been deallocated is
@@ -503,7 +522,7 @@ void luaD_poscall (lua_State *L, CallInfo *ci, int nres) {
 
 
 
-#define next_ci(L)  (L->ci->next ? L->ci->next : luaE_extendCI(L))
+#define next_ci(L)  (L->ci->next ? L->ci->next : luaE_extendCI(L, 1))
 
 
 l_sinline CallInfo *prepCallInfo (lua_State *L, StkId func, int nret,
diff --git a/dependencies/lua-5.4/src/ldo.h b/dependencies/lua-5.4/src/ldo.h
index 4de9540ec8..4c8db865fc 100644
--- a/dependencies/lua-5.4/src/ldo.h
+++ b/dependencies/lua-5.4/src/ldo.h
@@ -80,6 +80,7 @@ LUAI_FUNC int luaD_reallocstack (lua_State *L, int newsize, int raiseerror);
 LUAI_FUNC int luaD_growstack (lua_State *L, int n, int raiseerror);
 LUAI_FUNC void luaD_shrinkstack (lua_State *L);
 LUAI_FUNC void luaD_inctop (lua_State *L);
+LUAI_FUNC int luaD_checkminstack (lua_State *L);
 
 LUAI_FUNC l_noret luaD_throw (lua_State *L, int errcode);
 LUAI_FUNC int luaD_rawrunprotected (lua_State *L, Pfunc f, void *ud);
diff --git a/dependencies/lua-5.4/src/lgc.c b/dependencies/lua-5.4/src/lgc.c
index c01660abc5..52cea2400b 100644
--- a/dependencies/lua-5.4/src/lgc.c
+++ b/dependencies/lua-5.4/src/lgc.c
@@ -1242,7 +1242,7 @@ static void finishgencycle (lua_State *L, global_State *g) {
   correctgraylists(g);
   checkSizes(L, g);
   g->gcstate = GCSpropagate;  /* skip restart */
-  if (!g->gcemergency)
+  if (g->tobefnz != NULL && !g->gcemergency && luaD_checkminstack(L))
     callallpendingfinalizers(L);
 }
 
@@ -1632,11 +1632,12 @@ static lu_mem singlestep (lua_State *L) {
       break;
     }
     case GCScallfin: {  /* call remaining finalizers */
-      if (g->tobefnz && !g->gcemergency) {
+      if (g->tobefnz && !g->gcemergency && luaD_checkminstack(L)) {
         g->gcstopem = 0;  /* ok collections during finalizers */
         work = runafewfinalizers(L, GCFINMAX) * GCFINALIZECOST;
       }
-      else {  /* emergency mode or no more finalizers */
+      else {  /* no more finalizers or emergency mode or no enough stack
+                 to run finalizers */
         g->gcstate = GCSpause;  /* finish collection */
         work = 0;
       }
diff --git a/dependencies/lua-5.4/src/lstate.c b/dependencies/lua-5.4/src/lstate.c
index f3f2ccfdd5..059be806e3 100644
--- a/dependencies/lua-5.4/src/lstate.c
+++ b/dependencies/lua-5.4/src/lstate.c
@@ -102,14 +102,19 @@ LUA_API int lua_setcstacklimit (lua_State *L, unsigned int limit) {
 }
 
 
-CallInfo *luaE_extendCI (lua_State *L) {
+CallInfo *luaE_extendCI (lua_State *L, int err) {
   CallInfo *ci;
-  lua_assert(L->ci->next == NULL);
-  ci = luaM_new(L, CallInfo);
-  lua_assert(L->ci->next == NULL);
-  L->ci->next = ci;
+  ci = luaM_reallocvector(L, NULL, 0, 1, CallInfo);
+  if (l_unlikely(ci == NULL)) {  /* allocation failed? */
+    if (err)
+      luaM_error(L);  /* raise the error */
+    return NULL;  /* else only report it */
+  }
+  ci->next = L->ci->next;
   ci->previous = L->ci;
-  ci->next = NULL;
+  L->ci->next = ci;
+  if (ci->next)
+    ci->next->previous = ci;
   ci->u.l.trap = 0;
   L->nci++;
   return ci;
diff --git a/dependencies/lua-5.4/src/lstate.h b/dependencies/lua-5.4/src/lstate.h
index 007704c826..97bb3e8f20 100644
--- a/dependencies/lua-5.4/src/lstate.h
+++ b/dependencies/lua-5.4/src/lstate.h
@@ -395,7 +395,7 @@ union GCUnion {
 
 LUAI_FUNC void luaE_setdebt (global_State *g, l_mem debt);
 LUAI_FUNC void luaE_freethread (lua_State *L, lua_State *L1);
-LUAI_FUNC CallInfo *luaE_extendCI (lua_State *L);
+LUAI_FUNC CallInfo *luaE_extendCI (lua_State *L, int err);
 LUAI_FUNC void luaE_shrinkCI (lua_State *L);
 LUAI_FUNC void luaE_checkcstack (lua_State *L);
 LUAI_FUNC void luaE_incCstack (lua_State *L);
diff --git a/dependencies/lua-5.4/src/lstrlib.c b/dependencies/lua-5.4/src/lstrlib.c
index 03167161df..f748bf8821 100644
--- a/dependencies/lua-5.4/src/lstrlib.c
+++ b/dependencies/lua-5.4/src/lstrlib.c
@@ -757,7 +757,6 @@ static int nospecials (const char *p, size_t l) {
 static void prepstate (MatchState *ms, lua_State *L,
                        const char *s, size_t ls, const char *p, size_t lp) {
   ms->L = L;
-  ms->matchdepth = MAXCCALLS;
   ms->src_init = s;
   ms->src_end = s + ls;
   ms->p_end = p + lp;
@@ -765,8 +764,8 @@ static void prepstate (MatchState *ms, lua_State *L,
 
 
 static void reprepstate (MatchState *ms) {
+  ms->matchdepth = MAXCCALLS;
   ms->level = 0;
-  lua_assert(ms->matchdepth == MAXCCALLS);
 }
 
 
diff --git a/dependencies/lua-5.4/src/lua.h b/dependencies/lua-5.4/src/lua.h
index f3ea590d9c..211b97cff5 100644
--- a/dependencies/lua-5.4/src/lua.h
+++ b/dependencies/lua-5.4/src/lua.h
@@ -18,14 +18,14 @@
 
 #define LUA_VERSION_MAJOR	"5"
 #define LUA_VERSION_MINOR	"4"
-#define LUA_VERSION_RELEASE	"8"
+#define LUA_VERSION_RELEASE	"9"
 
 #define LUA_VERSION_NUM			504
-#define LUA_VERSION_RELEASE_NUM		(LUA_VERSION_NUM * 100 + 8)
+#define LUA_VERSION_RELEASE_NUM		(LUA_VERSION_NUM * 100 + 9)
 
 #define LUA_VERSION	"Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
 #define LUA_RELEASE	LUA_VERSION "." LUA_VERSION_RELEASE
-#define LUA_COPYRIGHT	LUA_RELEASE "  Copyright (C) 1994-2025 Lua.org, PUC-Rio"
+#define LUA_COPYRIGHT	LUA_RELEASE "  Copyright (C) 1994-2026 Lua.org, PUC-Rio"
 #define LUA_AUTHORS	"R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
 
 
@@ -497,7 +497,7 @@ struct lua_Debug {
 
 
 /******************************************************************************
-* Copyright (C) 1994-2025 Lua.org, PUC-Rio.
+* Copyright (C) 1994-2026 Lua.org, PUC-Rio.
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
diff --git a/dependencies/lua-5.4/src/lutf8lib.c b/dependencies/lua-5.4/src/lutf8lib.c
index 3a5b9bc38a..e41a8255bc 100644
--- a/dependencies/lua-5.4/src/lutf8lib.c
+++ b/dependencies/lua-5.4/src/lutf8lib.c
@@ -65,6 +65,8 @@ static const char *utf8_decode (const char *s, utfint *val, int strict) {
   utfint res = 0;  /* final result */
   if (c < 0x80)  /* ascii? */
     res = c;
+  else if (c >= 0xfe)  /* c >= 1111 1110b ? */
+    return NULL;  /* would need six or more continuation bytes */
   else {
     int count = 0;  /* to count number of continuation bytes */
     for (; c & 0x40; c <<= 1) {  /* while it needs continuation bytes... */
@@ -74,7 +76,7 @@ static const char *utf8_decode (const char *s, utfint *val, int strict) {
       res = (res << 6) | (cc & 0x3F);  /* add lower 6 bits from cont. byte */
     }
     res |= ((utfint)(c & 0x7F) << (count * 5));  /* add first byte */
-    if (count > 5 || res > MAXUTF || res < limits[count])
+    if (res > MAXUTF || res < limits[count])
       return NULL;  /* invalid byte sequence */
     s += count;  /* skip continuation bytes read */
   }
diff --git a/dependencies/lua-5.4/src/lvm.c b/dependencies/lua-5.4/src/lvm.c
index 7023a04da8..bbadf0a6b7 100644
--- a/dependencies/lua-5.4/src/lvm.c
+++ b/dependencies/lua-5.4/src/lvm.c
@@ -361,7 +361,12 @@ void luaV_finishset (lua_State *L, const TValue *t, TValue *key,
     }
     t = tm;  /* else repeat assignment over 'tm' */
     if (luaV_fastget(L, t, key, slot, luaH_get)) {
-      luaV_finishfastset(L, t, slot, val);
+      /* execute 'luaV_finishfastset', but preserving the original 't'
+         for the barrier. 't' and 'slot' can point to the same value,
+         and so the assignment can change 't' value */
+      GCObject *h = gcvalue(t);
+      setobj2t(L, cast(TValue *,slot), val);
+      luaC_barrierback(L, h, val);
       return;  /* done */
     }
     /* else 'return luaV_finishset(L, t, key, val, slot)' (loop) */
-- 
2.53.0

