From ed5a7f51e877ce1c125fdcda6412661f7a521ba5 Mon Sep 17 00:00:00 2001
From: James R <justsomejames2@gmail.com>
Date: Sun, 2 May 2021 21:32:07 -0700
Subject: [PATCH] Revert "Merge branch 'lightmemedata' into 'next'"

This reverts commit d4c08a84101d6d5cd75e550bacda5d9929413b72, reversing
changes made to e100f21ddaa46c8b82393baaa32cf84d222af616.
---
 src/lua_baselib.c    | 12 +++---------
 src/lua_consolelib.c | 18 ++++++++++++++++--
 src/lua_script.c     | 21 ---------------------
 src/lua_script.h     |  1 -
 4 files changed, 19 insertions(+), 33 deletions(-)

diff --git a/src/lua_baselib.c b/src/lua_baselib.c
index a59ba546e9..a265465dad 100644
--- a/src/lua_baselib.c
+++ b/src/lua_baselib.c
@@ -242,16 +242,10 @@ static const char *GetUserdataUType(lua_State *L)
 //   or players[0].powers -> "player_t.powers"
 static int lib_userdataType(lua_State *L)
 {
-	int type;
 	lua_settop(L, 1); // pop everything except arg 1 (in case somebody decided to add more)
-	type = lua_type(L, 1);
-	if (type == LUA_TLIGHTUSERDATA || type == LUA_TUSERDATA)
-	{
-		lua_pushstring(L, GetUserdataUType(L));
-		return 1;
-	}
-	else
-		return luaL_typerror(L, 1, "userdata");
+	luaL_checktype(L, 1, LUA_TUSERDATA);
+	lua_pushstring(L, GetUserdataUType(L));
+	return 1;
 }
 
 // Takes a metatable as first and only argument
diff --git a/src/lua_consolelib.c b/src/lua_consolelib.c
index 5344fee761..10959324e9 100644
--- a/src/lua_consolelib.c
+++ b/src/lua_consolelib.c
@@ -440,8 +440,22 @@ static int lib_cvRegisterVar(lua_State *L)
 
 static int lib_cvFindVar(lua_State *L)
 {
-	LUA_PushLightUserdata(L, CV_FindVar(luaL_checkstring(L,1)), META_CVAR);
-	return 1;
+	consvar_t *cv;
+	if (( cv = CV_FindVar(luaL_checkstring(L,1)) ))
+	{
+		lua_settop(L,1);/* We only want one argument in the stack. */
+		lua_pushlightuserdata(L, cv);/* Now the second value on stack. */
+		luaL_getmetatable(L, META_CVAR);
+		/*
+		The metatable is the last value on the stack, so this
+		applies it to the second value, which is the cvar.
+		*/
+		lua_setmetatable(L,2);
+		lua_pushvalue(L,2);
+		return 1;
+	}
+	else
+		return 0;
 }
 
 static int CVarSetFunction
diff --git a/src/lua_script.c b/src/lua_script.c
index 7fd5a98e6f..9f84328329 100644
--- a/src/lua_script.c
+++ b/src/lua_script.c
@@ -714,27 +714,6 @@ fixed_t LUA_EvalMath(const char *word)
 	return res;
 }
 
-/*
-LUA_PushUserdata but no userdata is created.
-You can't invalidate it therefore.
-*/
-
-void LUA_PushLightUserdata (lua_State *L, void *data, const char *meta)
-{
-	if (data)
-	{
-		lua_pushlightuserdata(L, data);
-		luaL_getmetatable(L, meta);
-		/*
-		The metatable is the last value on the stack, so this
-		applies it to the second value, which is the userdata.
-		*/
-		lua_setmetatable(L, -2);
-	}
-	else
-		lua_pushnil(L);
-}
-
 // Takes a pointer, any pointer, and a metatable name
 // Creates a userdata for that pointer with the given metatable
 // Pushes it to the stack and stores it in the registry.
diff --git a/src/lua_script.h b/src/lua_script.h
index 77fbb7c1d1..9311a727a0 100644
--- a/src/lua_script.h
+++ b/src/lua_script.h
@@ -87,7 +87,6 @@ typedef enum {
 	LPUSHED_EXISTING,
 } lpushed_t;
 
-void LUA_PushLightUserdata(lua_State *L, void *data, const char *meta);
 void LUA_PushUserdata(lua_State *L, void *data, const char *meta);
 lpushed_t LUA_RawPushUserdata(lua_State *L, void *data);
 
-- 
GitLab