summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-08-19 20:31:24 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-08-19 20:31:24 (GMT)
commit43ed72b4c5c803eaac0af7589f25a9f74e1df33b (patch)
tree3a82a99df0fc5aae157b5a0db37b7f6bec24642d /src
parent9dd9d525648fa941419e13bedd498d634b0b136b (diff)
downloadpowder-43ed72b4c5c803eaac0af7589f25a9f74e1df33b.zip
powder-43ed72b4c5c803eaac0af7589f25a9f74e1df33b.tar.gz
Fix a few small (a lot of big) memory leaks associated with the stamps browser
Diffstat (limited to 'src')
-rw-r--r--src/client/Client.cpp4
-rw-r--r--src/game/GameController.cpp10
-rw-r--r--src/game/GameModel.cpp2
-rw-r--r--src/game/GameView.cpp3
-rw-r--r--src/localbrowser/LocalBrowserModel.cpp6
5 files changed, 21 insertions, 4 deletions
diff --git a/src/client/Client.cpp b/src/client/Client.cpp
index ad5e458..4799d9a 100644
--- a/src/client/Client.cpp
+++ b/src/client/Client.cpp
@@ -813,7 +813,7 @@ SaveFile * Client::GetStamp(std::string stampID)
size_t fileSize = stampFile.tellg();
stampFile.seekg(0);
- unsigned char * tempData = (unsigned char *)malloc(fileSize);
+ unsigned char * tempData = new unsigned char[fileSize];
stampFile.read((char *)tempData, fileSize);
stampFile.close();
@@ -826,8 +826,10 @@ SaveFile * Client::GetStamp(std::string stampID)
}
catch (ParseException & e)
{
+ delete[] tempData;
std::cerr << "Client: Invalid stamp file, " << stampID << " " << std::string(e.what()) << std::endl;
}
+ delete[] tempData;
return file;
}
else
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp
index 91c64c0..f1371a5 100644
--- a/src/game/GameController.cpp
+++ b/src/game/GameController.cpp
@@ -180,6 +180,10 @@ GameController::~GameController()
{
delete activePreview;
}
+ if(localBrowser)
+ {
+ delete localBrowser;
+ }
if(ui::Engine::Ref().GetWindow() == gameView)
{
ui::Engine::Ref().CloseWindow();
@@ -751,6 +755,12 @@ void GameController::Update()
delete loginWindow;
loginWindow = NULL;
}
+
+ if(localBrowser && localBrowser->HasDone)
+ {
+ delete localBrowser;
+ localBrowser = NULL;
+ }
}
void GameController::SetZoomEnabled(bool zoomEnabled)
diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp
index f27ebfa..23f3404 100644
--- a/src/game/GameModel.cpp
+++ b/src/game/GameModel.cpp
@@ -119,6 +119,8 @@ GameModel::~GameModel()
}
delete sim;
delete ren;
+ if(placeSave)
+ delete placeSave;
if(clipboard)
delete clipboard;
if(stamp)
diff --git a/src/game/GameView.cpp b/src/game/GameView.cpp
index f812358..f354df0 100644
--- a/src/game/GameView.cpp
+++ b/src/game/GameView.cpp
@@ -527,6 +527,9 @@ GameView::~GameView()
if(!colourAValue->GetParentWindow())
delete colourAValue;
+
+ if(placeSaveThumb)
+ delete placeSaveThumb;
}
class GameView::MenuAction: public ui::ButtonAction
diff --git a/src/localbrowser/LocalBrowserModel.cpp b/src/localbrowser/LocalBrowserModel.cpp
index c9fb0d9..60e20c3 100644
--- a/src/localbrowser/LocalBrowserModel.cpp
+++ b/src/localbrowser/LocalBrowserModel.cpp
@@ -68,10 +68,10 @@ void LocalBrowserModel::UpdateSavesList(int pageNumber)
currentPage = pageNumber;
notifyPageChanged();
notifySavesListChanged();
- /*notifyStampsListChanged();
- for(int i = 0; i < tempStampsList.size(); i++)
+ //notifyStampsListChanged();
+ /*for(int i = 0; i < tempSavesList.size(); i++)
{
- delete tempStampsList[i];
+ delete tempSavesList[i];
}*/
stampIDs = Client::Ref().GetStamps((pageNumber-1)*20, 20);