diff --git a/src/stratagus/script.cpp b/src/stratagus/script.cpp index 9a7ecf522..ea29da520 100644 --- a/src/stratagus/script.cpp +++ b/src/stratagus/script.cpp @@ -1993,8 +1993,8 @@ static int CclFilteredListDirectory(lua_State *l, int type, int mask) if (args < 1 || args > 2) { LuaError(l, "incorrect argument"); } - const char *userdir = lua_tostring(l, 1); - const int rel = args > 1 ? lua_toboolean(l, 2) : 0; + const char *userdir = LuaToString(l, 1); + const bool rel = args > 1 ? lua_toboolean(l, 2) : false; int n = strlen(userdir); int pathtype = 0; // path relative to stratagus dir @@ -2020,11 +2020,9 @@ static int CclFilteredListDirectory(lua_State *l, int type, int mask) } else if (rel) { std::string dir = LibraryFileName(userdir); snprintf(directory, sizeof(directory), "%s", dir.c_str()); - lua_pop(l, 1); } else { snprintf(directory, sizeof(directory), "%s/%s", StratagusLibPath.c_str(), userdir); } - lua_pop(l, 1); lua_newtable(l); std::vector<FileList> flp; n = ReadDataDirectory(directory, flp); @@ -2033,7 +2031,7 @@ static int CclFilteredListDirectory(lua_State *l, int type, int mask) if ((flp[i].type & mask) == type) { lua_pushnumber(l, j + 1); lua_pushstring(l, flp[i].name.c_str()); - lua_settable(l, 1); + lua_settable(l, -3); ++j; } }