From 6d0dd6aee8abc6fbf032f925cd77a46528158646 Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Wed, 7 Jan 2004 07:42:00 +0000 Subject: Valgrind fixes. Mostly about memory not being freed when the engine is deleted. svn-id: r12211 --- sword2/driver/d_draw.cpp | 7 +++++++ sword2/driver/d_sound.cpp | 3 +++ sword2/logic.h | 14 +++++++++----- sword2/resman.cpp | 2 ++ 4 files changed, 21 insertions(+), 5 deletions(-) (limited to 'sword2') 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 -- cgit v1.2.3