From 43ed72b4c5c803eaac0af7589f25a9f74e1df33b Mon Sep 17 00:00:00 2001 From: Simon Robertshaw Date: Sun, 19 Aug 2012 21:31:24 +0100 Subject: Fix a few small (a lot of big) memory leaks associated with the stamps browser 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); -- cgit v0.9.2-21-gd62e