From 5bbcffe6f9963aa4be3aa954be95b7e8fbd3372d Mon Sep 17 00:00:00 2001
From: Lactozilla <jp6781615@gmail.com>
Date: Thu, 30 Nov 2023 20:08:09 -0300
Subject: [PATCH] Ensure extracolormap_t is valid and that extra_colormap is
 invalidated

---
 src/lua_colorlib.c | 6 ++++++
 src/lua_script.c   | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/src/lua_colorlib.c b/src/lua_colorlib.c
index bf9c33886c..d334052abe 100644
--- a/src/lua_colorlib.c
+++ b/src/lua_colorlib.c
@@ -116,6 +116,9 @@ static int extracolormap_get(lua_State *L)
 	extracolormap_t *exc = *((extracolormap_t **)luaL_checkudata(L, 1, META_EXTRACOLORMAP));
 	enum extracolormap_e field = luaL_checkoption(L, 2, NULL, extracolormap_opt);
 
+	if (!exc)
+		return LUA_ErrInvalid(L, "extracolormap_t");
+
 	switch (field)
 	{
 	case extracolormap_red:
@@ -198,6 +201,9 @@ static int extracolormap_set(lua_State *L)
 	extracolormap_t *exc = *((extracolormap_t **)luaL_checkudata(L, 1, META_EXTRACOLORMAP));
 	enum extracolormap_e field = luaL_checkoption(L, 2, NULL, extracolormap_opt);
 
+	if (!exc)
+		return LUA_ErrInvalid(L, "extracolormap_t");
+
 	UINT8 r = R_GetRgbaR(exc->rgba);
 	UINT8 g = R_GetRgbaG(exc->rgba);
 	UINT8 b = R_GetRgbaB(exc->rgba);
diff --git a/src/lua_script.c b/src/lua_script.c
index b0b6eeec79..c63905d047 100644
--- a/src/lua_script.c
+++ b/src/lua_script.c
@@ -892,6 +892,8 @@ void LUA_InvalidateLevel(void)
 		LUA_InvalidateUserdata(&sectors[i]);
 		LUA_InvalidateUserdata(&sectors[i].lines);
 		LUA_InvalidateUserdata(&sectors[i].tags);
+		if (sectors[i].extra_colormap)
+			LUA_InvalidateUserdata(sectors[i].extra_colormap);
 		if (sectors[i].ffloors)
 		{
 			for (rover = sectors[i].ffloors; rover; rover = rover->next)
-- 
GitLab