Check argument types inside MetaDataRef Lua API (#7045)
authorsfan5 <sfan5@live.de>
Sun, 18 Feb 2018 09:40:45 +0000 (10:40 +0100)
committerSmallJoker <SmallJoker@users.noreply.github.com>
Sun, 18 Feb 2018 09:40:45 +0000 (10:40 +0100)
src/script/lua_api/l_metadata.cpp
src/script/lua_api/l_nodemeta.cpp

index 494d2dce0e187aa425d9b30a732d22680a46d604..e84d1d9394944ef24e3d56fe19e7fce9ffa69c9a 100644 (file)
@@ -95,7 +95,7 @@ int MetaDataRef::l_get_int(lua_State *L)
        MAP_LOCK_REQUIRED;
 
        MetaDataRef *ref = checkobject(L, 1);
-       std::string name = lua_tostring(L, 2);
+       std::string name = luaL_checkstring(L, 2);
 
        Metadata *meta = ref->getmeta(false);
        if (meta == NULL) {
@@ -114,8 +114,8 @@ int MetaDataRef::l_set_int(lua_State *L)
        MAP_LOCK_REQUIRED;
 
        MetaDataRef *ref = checkobject(L, 1);
-       std::string name = lua_tostring(L, 2);
-       int a = lua_tointeger(L, 3);
+       std::string name = luaL_checkstring(L, 2);
+       int a = luaL_checkint(L, 3);
        std::string str = itos(a);
 
        Metadata *meta = ref->getmeta(true);
@@ -133,7 +133,7 @@ int MetaDataRef::l_get_float(lua_State *L)
        MAP_LOCK_REQUIRED;
 
        MetaDataRef *ref = checkobject(L, 1);
-       std::string name = lua_tostring(L, 2);
+       std::string name = luaL_checkstring(L, 2);
 
        Metadata *meta = ref->getmeta(false);
        if (meta == NULL) {
@@ -152,8 +152,8 @@ int MetaDataRef::l_set_float(lua_State *L)
        MAP_LOCK_REQUIRED;
 
        MetaDataRef *ref = checkobject(L, 1);
-       std::string name = lua_tostring(L, 2);
-       float a = lua_tonumber(L, 3);
+       std::string name = luaL_checkstring(L, 2);
+       float a = luaL_checknumber(L, 3);
        std::string str = ftos(a);
 
        Metadata *meta = ref->getmeta(true);
index 3d7adf27d8685bd3e3e976520dfe011870ae325d..348d73ad55c4241b62d8437aface70518b9af71f 100644 (file)
@@ -159,7 +159,7 @@ bool NodeMetaRef::handleFromTable(lua_State *L, int table, Metadata *_meta)
                lua_pushnil(L);
                while (lua_next(L, inventorytable) != 0) {
                        // key at index -2 and value at index -1
-                       std::string name = lua_tostring(L, -2);
+                       std::string name = luaL_checkstring(L, -2);
                        read_inventory_list(L, -1, inv, name.c_str(), getServer(L));
                        lua_pop(L, 1); // Remove value, keep key for next iteration
                }