Skip to content
Permalink
Browse files

Content store: Fix storage leak by storing screenshots in cache (#8137)

  • Loading branch information...
rubenwardy authored and paramat committed Jan 31, 2019
1 parent 944e9f5 commit 572ba83b3084e3d3abd294acb914746d29822a98
@@ -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 = {}
@@ -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)
@@ -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);
@@ -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;
}

@@ -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);
@@ -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);
@@ -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);

0 comments on commit 572ba83

Please sign in to comment.
You can’t perform that action at this time.