aboutsummaryrefslogtreecommitdiff
path: root/sword2
diff options
context:
space:
mode:
authorTorbjörn Andersson2004-01-07 07:42:00 +0000
committerTorbjörn Andersson2004-01-07 07:42:00 +0000
commit6d0dd6aee8abc6fbf032f925cd77a46528158646 (patch)
tree5eb446b2f65ffcbcf8983cb5f85b533d9d583a59 /sword2
parent9fc9e6be20bd9b81ba77e8fd503880417ed10d07 (diff)
downloadscummvm-rg350-6d0dd6aee8abc6fbf032f925cd77a46528158646.tar.gz
scummvm-rg350-6d0dd6aee8abc6fbf032f925cd77a46528158646.tar.bz2
scummvm-rg350-6d0dd6aee8abc6fbf032f925cd77a46528158646.zip
Valgrind fixes. Mostly about memory not being freed when the engine is
deleted. svn-id: r12211
Diffstat (limited to 'sword2')
-rw-r--r--sword2/driver/d_draw.cpp7
-rw-r--r--sword2/driver/d_sound.cpp3
-rw-r--r--sword2/logic.h14
-rw-r--r--sword2/resman.cpp2
4 files changed, 21 insertions, 5 deletions
diff --git a/sword2/driver/d_draw.cpp b/sword2/driver/d_draw.cpp
index 005e4d80be..86e431af72 100644
--- a/sword2/driver/d_draw.cpp
+++ b/sword2/driver/d_draw.cpp
@@ -66,6 +66,13 @@ Graphics::Graphics(Sword2Engine *vm, int16 width, int16 height)
Graphics::~Graphics() {
free(_buffer);
free(_dirtyGrid);
+ closeBackgroundLayer();
+ free(_lightMask);
+ free(_mouseAnim);
+ free(_luggageAnim);
+ for (int i = 0; i < 2; i++)
+ for (int j = 0; j < RDMENU_MAXPOCKETS; j++)
+ free(_icons[i][j]);
}
/**
diff --git a/sword2/driver/d_sound.cpp b/sword2/driver/d_sound.cpp
index 1a421d6cc5..5dbf75d49f 100644
--- a/sword2/driver/d_sound.cpp
+++ b/sword2/driver/d_sound.cpp
@@ -77,6 +77,9 @@ Sound::Sound(Sword2Engine *vm) {
Sound::~Sound() {
_vm->_mixer->setupPremix(0, 0);
+ delete _converter;
+ for (int i = 0; i < MAXFX; i++)
+ stopFxHandle(i);
if (_mutex)
_vm->_system->delete_mutex(_mutex);
}
diff --git a/sword2/logic.h b/sword2/logic.h
index 99dedc2744..fc44ce8ac8 100644
--- a/sword2/logic.h
+++ b/sword2/logic.h
@@ -164,11 +164,11 @@ public:
Logic(Sword2Engine *vm) :
_vm(vm), _globals(NULL), _kills(0), _debugFlag(false),
_smackerLeadOut(0), _sequenceTextLines(0), _speechTime(0),
- _animId(0), _leftClickDelay(0), _rightClickDelay(0),
- _defaultResponseId(0), _totalStartups(0),
- _totalScreenManagers(0), _officialTextNumber(0),
- _speechScriptWaiting(0), _speechTextBlocNo(0),
- _choosing(false), _unpauseZone(0) {
+ _animId(0), _speechAnimType(0), _leftClickDelay(0),
+ _rightClickDelay(0), _defaultResponseId(0),
+ _totalStartups(0), _totalScreenManagers(0),
+ _officialTextNumber(0), _speechScriptWaiting(0),
+ _speechTextBlocNo(0), _choosing(false), _unpauseZone(0) {
memset(_subjectList, 0, sizeof(_subjectList));
memset(_eventList, 0, sizeof(_eventList));
memset(_syncList, 0, sizeof(_syncList));
@@ -176,6 +176,10 @@ public:
initStartMenu();
}
+ ~Logic() {
+ delete _router;
+ }
+
// "TEXT" - current official text line number - will match the wav
// filenames
diff --git a/sword2/resman.cpp b/sword2/resman.cpp
index 029ecb1d4f..7718f9426e 100644
--- a/sword2/resman.cpp
+++ b/sword2/resman.cpp
@@ -73,6 +73,7 @@ ResourceManager::ResourceManager(Sword2Engine *vm) {
uint32 j = 0;
_totalClusters = 0;
+ _resConvTable = NULL;
if (!file.open("resource.inf")) {
error("init cannot *OPEN* resource.inf");
@@ -192,6 +193,7 @@ ResourceManager::~ResourceManager(void) {
free(_resList);
free(_age);
free(_count);
+ free(_resConvTable);
}
// Quick macro to make swapping in-place easier to write