From 89c7d9ea028347fc349c6a82d712e2d65571812f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20B=C3=A1lint=20Misius?= Date: Sun, 24 Mar 2019 21:47:31 +0100 Subject: [PATCH] Fix save buttons and probably other things not being cleaned up in FileBrowserActivity (fixed #635) --- src/gui/filebrowser/FileBrowserActivity.cpp | 28 +++++++++++++-------- src/gui/filebrowser/FileBrowserActivity.h | 1 + 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/gui/filebrowser/FileBrowserActivity.cpp b/src/gui/filebrowser/FileBrowserActivity.cpp index a395a6197..89f5ac505 100644 --- a/src/gui/filebrowser/FileBrowserActivity.cpp +++ b/src/gui/filebrowser/FileBrowserActivity.cpp @@ -191,6 +191,21 @@ void FileBrowserActivity::RenameSave(SaveFile * file) ErrorMessage::Blocking("Error", "No save name given"); } +void FileBrowserActivity::cleanup() +{ + for (auto comp : componentsQueue) + { + delete comp; + } + componentsQueue.clear(); + + for (auto file : files) + { + delete file; + } + files.clear(); +} + void FileBrowserActivity::loadDirectory(ByteString directory, ByteString search) { for (size_t i = 0; i < components.size(); i++) @@ -199,17 +214,7 @@ void FileBrowserActivity::loadDirectory(ByteString directory, ByteString search) itemList->RemoveChild(components[i]); } - for (std::vector::iterator iter = componentsQueue.begin(), end = componentsQueue.end(); iter != end; ++iter) - { - delete *iter; - } - componentsQueue.clear(); - - for (std::vector::iterator iter = files.begin(), end = files.end(); iter != end; ++iter) - { - delete *iter; - } - files.clear(); + cleanup(); infoText->Visible = false; itemList->Visible = false; @@ -325,4 +330,5 @@ void FileBrowserActivity::OnDraw() FileBrowserActivity::~FileBrowserActivity() { delete callback; + cleanup(); } diff --git a/src/gui/filebrowser/FileBrowserActivity.h b/src/gui/filebrowser/FileBrowserActivity.h index be9ddf64b..d12407ce7 100644 --- a/src/gui/filebrowser/FileBrowserActivity.h +++ b/src/gui/filebrowser/FileBrowserActivity.h @@ -45,6 +45,7 @@ class FileBrowserActivity: public TaskListener, public WindowActivity class SearchAction; void populateList(); + void cleanup(); public: FileBrowserActivity(ByteString directory, FileSelectedCallback * callback); void OnDraw() override;