Check minetest.hud_change() parameters on conversion (Fix #1714)
authorkwolekr <kwolekr@minetest.net>
Thu, 30 Oct 2014 04:11:46 +0000 (00:11 -0400)
committerkwolekr <kwolekr@minetest.net>
Thu, 30 Oct 2014 04:12:12 +0000 (00:12 -0400)
src/script/lua_api/l_object.cpp

index a556439dca36c8e2d1e4a035b2f538752d13d848..7f98c94586137913aeb53ce24bb432a5f1b7e2e0 100644 (file)
@@ -970,14 +970,14 @@ int ObjectRef::l_hud_change(lua_State *L)
        if (player == NULL)
                return 0;
 
-       u32 id = !lua_isnil(L, 2) ? lua_tonumber(L, 2) : -1;
+       u32 id = lua_isnumber(L, 2) ? lua_tonumber(L, 2) : -1;
 
        HudElement *e = player->getHud(id);
        if (!e)
                return 0;
 
        HudElementStat stat = HUD_STAT_NUMBER;
-       if (!lua_isnil(L, 3)) {
+       if (lua_isstring(L, 3)) {
                int statint;
                std::string statstr = lua_tostring(L, 3);
                stat = string_to_enum(es_HudElementStat, statint, statstr) ?
@@ -991,7 +991,7 @@ int ObjectRef::l_hud_change(lua_State *L)
                        value = &e->pos;
                        break;
                case HUD_STAT_NAME:
-                       e->name = lua_tostring(L, 4);
+                       e->name = luaL_checkstring(L, 4);
                        value = &e->name;
                        break;
                case HUD_STAT_SCALE:
@@ -999,19 +999,19 @@ int ObjectRef::l_hud_change(lua_State *L)
                        value = &e->scale;
                        break;
                case HUD_STAT_TEXT:
-                       e->text = lua_tostring(L, 4);
+                       e->text = luaL_checkstring(L, 4);
                        value = &e->text;
                        break;
                case HUD_STAT_NUMBER:
-                       e->number = lua_tonumber(L, 4);
+                       e->number = luaL_checknumber(L, 4);
                        value = &e->number;
                        break;
                case HUD_STAT_ITEM:
-                       e->item = lua_tonumber(L, 4);
+                       e->item = luaL_checknumber(L, 4);
                        value = &e->item;
                        break;
                case HUD_STAT_DIR:
-                       e->dir = lua_tonumber(L, 4);
+                       e->dir = luaL_checknumber(L, 4);
                        value = &e->dir;
                        break;
                case HUD_STAT_ALIGN: