Check argument types inside MetaDataRef Lua API (#7045)
authorsfan5 <sfan5@live.de>
Sun, 18 Feb 2018 09:40:45 +0000 (10:40 +0100)
committerSmallJoker <mk939@ymail.com>
Sun, 3 Jun 2018 15:32:00 +0000 (17:32 +0200)
src/script/lua_api/l_metadata.cpp
src/script/lua_api/l_nodemeta.cpp

index 5f4e984cb59c9fce79bf82250c3c140f247b3d0e..16cbcc05e14b640dba9bf1268d84c605be94f47b 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 5dfa6d52e97928bd57f4b2e447db644deb657ab7..0af5eea543b45922897963f5c849fb8dec6d2dfb 100644 (file)
@@ -158,7 +158,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
                }