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(§ors[i]); LUA_InvalidateUserdata(§ors[i].lines); LUA_InvalidateUserdata(§ors[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