Skip to content

Commit

Permalink
Content store: Fix storage leak by storing screenshots in cache (#8137)
Browse files Browse the repository at this point in the history
  • Loading branch information
rubenwardy authored and paramat committed Jan 31, 2019
1 parent 944e9f5 commit 572ba83
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 1 deletion.
2 changes: 1 addition & 1 deletion builtin/mainmenu/dlg_contentstore.lua
Expand Up @@ -19,7 +19,7 @@ local store = {}
local package_dialog = {}

-- Screenshot
local screenshot_dir = os.tempfolder()
local screenshot_dir = core.get_cache_path() .. DIR_DELIM .. "cdb"
assert(core.create_dir(screenshot_dir))
local screenshot_downloading = {}
local screenshot_downloaded = {}
Expand Down
1 change: 1 addition & 0 deletions doc/menu_lua_api.txt
Expand Up @@ -65,6 +65,7 @@ core.get_video_drivers()
^ first element of returned list is guaranteed to be the NULL driver
core.get_mapgen_names([include_hidden=false]) -> table of map generator algorithms
registered in the core (possible in async calls)
core.get_cache_path() -> path of cache

Formspec:
core.update_formspec(formspec)
Expand Down
11 changes: 11 additions & 0 deletions src/script/lua_api/l_mainmenu.cpp
Expand Up @@ -683,6 +683,12 @@ int ModApiMainMenu::l_get_texturepath_share(lua_State *L)
return 1;
}

int ModApiMainMenu::l_get_cache_path(lua_State *L)
{
lua_pushstring(L, fs::RemoveRelativePathComponents(porting::path_cache).c_str());
return 1;
}

/******************************************************************************/
int ModApiMainMenu::l_create_dir(lua_State *L) {
const char *path = luaL_checkstring(L, 1);
Expand Down Expand Up @@ -855,6 +861,9 @@ bool ModApiMainMenu::mayModifyPath(const std::string &path)
if (fs::PathStartsWith(path, fs::RemoveRelativePathComponents(porting::path_user + DIR_DELIM "worlds")))
return true;

if (fs::PathStartsWith(path, fs::RemoveRelativePathComponents(porting::path_cache)))
return true;

return false;
}

Expand Down Expand Up @@ -1043,6 +1052,7 @@ void ModApiMainMenu::Initialize(lua_State *L, int top)
API_FCT(get_gamepath);
API_FCT(get_texturepath);
API_FCT(get_texturepath_share);
API_FCT(get_cache_path);
API_FCT(create_dir);
API_FCT(delete_dir);
API_FCT(copy_dir);
Expand Down Expand Up @@ -1071,6 +1081,7 @@ void ModApiMainMenu::InitializeAsync(lua_State *L, int top)
API_FCT(get_gamepath);
API_FCT(get_texturepath);
API_FCT(get_texturepath_share);
API_FCT(get_cache_path);
API_FCT(create_dir);
API_FCT(delete_dir);
API_FCT(copy_dir);
Expand Down
2 changes: 2 additions & 0 deletions src/script/lua_api/l_mainmenu.h
Expand Up @@ -120,6 +120,8 @@ class ModApiMainMenu: public ModApiBase

static int l_get_texturepath_share(lua_State *L);

static int l_get_cache_path(lua_State *L);

static int l_create_dir(lua_State *L);

static int l_delete_dir(lua_State *L);
Expand Down

0 comments on commit 572ba83

Please sign in to comment.