aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/agos.cpp
diff options
context:
space:
mode:
authorDavid Turner2011-01-27 02:57:07 +0000
committerDavid Turner2011-01-27 02:57:07 +0000
commitd55626722eb53650bee43b1a5ed3f544824f2b7f (patch)
treeef2401461eecde677cccedb0b0677d748ce0bdd8 /engines/agos/agos.cpp
parentb7a8444992b8f17ea553f9e2a2c7a9989e4f0ad6 (diff)
downloadscummvm-rg350-d55626722eb53650bee43b1a5ed3f544824f2b7f.tar.gz
scummvm-rg350-d55626722eb53650bee43b1a5ed3f544824f2b7f.tar.bz2
scummvm-rg350-d55626722eb53650bee43b1a5ed3f544824f2b7f.zip
AGOS: Fix Memory Leaks when playing Simon 2 Win.
These were identified with Valgrind. svn-id: r55558
Diffstat (limited to 'engines/agos/agos.cpp')
-rw-r--r--engines/agos/agos.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp
index 7250c7b957..fb96759a08 100644
--- a/engines/agos/agos.cpp
+++ b/engines/agos/agos.cpp
@@ -895,10 +895,6 @@ void AGOSEngine::setupGame() {
}
AGOSEngine::~AGOSEngine() {
- // In Simon 2, this gets deleted along with _sound further down
- if (getGameType() != GType_SIMON2)
- delete _gameFile;
-
_midi.close();
delete _driver;
@@ -925,14 +921,20 @@ AGOSEngine::~AGOSEngine() {
free(_textMem);
free(_xtblList);
+ if (_backGroundBuf)
+ _backGroundBuf->free();
delete _backGroundBuf;
delete _backBuf;
free(_planarBuf);
delete _scaleBuf;
free(_zoneBuffers);
- free(_window4BackScn);
- free(_window6BackScn);
+ if (_window4BackScn)
+ _window4BackScn->free();
+ delete _window4BackScn;
+ if (_window6BackScn)
+ _window6BackScn->free();
+ delete _window6BackScn;
free(_firstTimeStruct);
free(_pendingDeleteTimeEvent);
@@ -949,6 +951,7 @@ AGOSEngine::~AGOSEngine() {
delete _debugger;
delete _sound;
+ delete _gameFile;
}
GUI::Debugger *AGOSEngine::getDebugger() {