From baf0e6ab72e937a0268846c09beb1d03965a5fa5 Mon Sep 17 00:00:00 2001
From: Marko Lindqvist <cazfi74@gmail.com>
Date: Thu, 1 Oct 2026 05:57:44 +0300
Subject: [PATCH 73/73] Apply patch 1 for lua-5.5.1

See RM #2317

Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
---
 dependencies/lua-5.5/Version.txt   | 2 +-
 dependencies/lua-5.5/src/lgc.c     | 3 ++-
 dependencies/lua-5.5/src/lobject.c | 1 +
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/dependencies/lua-5.5/Version.txt b/dependencies/lua-5.5/Version.txt
index faf57be91f..708b9cffab 100644
--- a/dependencies/lua-5.5/Version.txt
+++ b/dependencies/lua-5.5/Version.txt
@@ -2,7 +2,7 @@ Sources here are from lua-5.5.1
 (http://www.lua.org/ftp/lua-5.5.1.tar.gz)
 
 Upstream bug fixes from https://www.lua.org/bugs.html applied:
-
+1
 
 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.5/src/lgc.c b/dependencies/lua-5.5/src/lgc.c
index a463e41e6d..cf4160c1dc 100644
--- a/dependencies/lua-5.5/src/lgc.c
+++ b/dependencies/lua-5.5/src/lgc.c
@@ -1472,7 +1472,8 @@ static int checkmajorminor (lua_State *L, global_State *g) {
   if (g->gckind == KGC_GENMAJOR) {  /* generational mode? */
     l_mem numbytes = gettotalbytes(g);
     l_mem addedbytes = numbytes - g->GCmajorminor;
-    l_mem limit = applygcparam(g, MAJORMINOR, addedbytes);
+    l_mem limit = (addedbytes < 0) ? 0
+                                   : applygcparam(g, MAJORMINOR, addedbytes);
     l_mem tobecollected = numbytes - g->GCmarked;
     if (tobecollected > limit) {
       atomic2gen(L, g);  /* return to generational mode */
diff --git a/dependencies/lua-5.5/src/lobject.c b/dependencies/lua-5.5/src/lobject.c
index 763b484609..6997cfd021 100644
--- a/dependencies/lua-5.5/src/lobject.c
+++ b/dependencies/lua-5.5/src/lobject.c
@@ -89,6 +89,7 @@ lu_byte luaO_codeparam (unsigned int p) {
 l_mem luaO_applyparam (lu_byte p, l_mem x) {
   int m = p & 0xF;  /* mantissa */
   int e = (p >> 4);  /* exponent */
+  lua_assert(x >= 0);
   if (e > 0) {  /* normalized? */
     e--;  /* correct exponent */
     m += 0x10;  /* correct mantissa; maximum value is 0x1F */
-- 
2.53.0

