From 14ba94ad6a0e2176106af08e41d99ad81b03e9e4 Mon Sep 17 00:00:00 2001
From: kwolekr <kwolekr@minetest.net>
Date: Sun, 21 Apr 2013 12:55:46 -0400
Subject: [PATCH] Fix hud_change stat argument retrieval

---
 src/scriptapi_object.cpp | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/scriptapi_object.cpp b/src/scriptapi_object.cpp
index 3d56aad29..9152c9eb3 100644
--- a/src/scriptapi_object.cpp
+++ b/src/scriptapi_object.cpp
@@ -788,15 +788,17 @@ int ObjectRef::l_hud_change(lua_State *L)
 	if (player == NULL)
 		return 0;
 
-	u32 id = -1;
-	if (!lua_isnil(L, 2))
-		id = lua_tonumber(L, 2);
-	
-	HudElementStat stat = (HudElementStat)getenumfield(L, 3, "stat",
-								es_HudElementStat, HUD_STAT_NUMBER);
-	
+	u32 id = !lua_isnil(L, 2) ? lua_tonumber(L, 2) : -1;
 	if (id >= player->hud.size())
 		return 0;
+		
+	HudElementStat stat = HUD_STAT_NUMBER;
+	if (!lua_isnil(L, 3)) {
+		int statint;
+		std::string statstr = lua_tostring(L, 3);
+		stat = string_to_enum(es_HudElementStat, statint, statstr) ?
+				(HudElementStat)statint : HUD_STAT_NUMBER;
+	}
 	
 	void *value = NULL;
 	HudElement *e = player->hud[id];
@@ -832,7 +834,7 @@ int ObjectRef::l_hud_change(lua_State *L)
 			e->dir = lua_tonumber(L, 4);
 			value = &e->dir;
 	}
-	
+
 	get_server(L)->hudChange(player, id, stat, value);
 
 	lua_pushboolean(L, true);
-- 
GitLab