[Scummvm-cvs-logs] SF.net SVN: scummvm:[54193] scummvm/trunk/engines/lastexpress
littleboy at users.sourceforge.net
littleboy at users.sourceforge.net
Thu Nov 11 04:25:35 CET 2010
Revision: 54193
http://scummvm.svn.sourceforge.net/scummvm/?rev=54193&view=rev
Author: littleboy
Date: 2010-11-11 03:25:35 +0000 (Thu, 11 Nov 2010)
Log Message:
-----------
LASTEXPRESS: Fix some memory leaks
- Reading past the end of file in SaveLoad::init
- Missing deallocation of cache in SoundManager
- Missing deallocation of coords in SceneHotspot
- Missing deallocation of event handlers in LastExpressEngine::setEventHandlers
- Missing deallocation of InSaveFile in SaveLoad::isSavegameValid
- Missing deallocation of frames in Menu
as reported by digitall
Modified Paths:
--------------
scummvm/trunk/engines/lastexpress/data/scene.cpp
scummvm/trunk/engines/lastexpress/data/scene.h
scummvm/trunk/engines/lastexpress/game/menu.cpp
scummvm/trunk/engines/lastexpress/game/savegame.cpp
scummvm/trunk/engines/lastexpress/game/sound.cpp
scummvm/trunk/engines/lastexpress/lastexpress.cpp
Modified: scummvm/trunk/engines/lastexpress/data/scene.cpp
===================================================================
--- scummvm/trunk/engines/lastexpress/data/scene.cpp 2010-11-11 02:08:17 UTC (rev 54192)
+++ scummvm/trunk/engines/lastexpress/data/scene.cpp 2010-11-11 03:25:35 UTC (rev 54193)
@@ -27,11 +27,19 @@
#include "lastexpress/data/background.h"
+#include "lastexpress/helpers.h"
#include "lastexpress/lastexpress.h"
#include "lastexpress/resource.h"
namespace LastExpress {
+SceneHotspot::~SceneHotspot() {
+ for (uint i = 0; i < _coords.size(); i++)
+ SAFE_DELETE(_coords[i]);
+
+ _coords.clear();
+}
+
SceneHotspot *SceneHotspot::load(Common::SeekableReadStream *stream) {
SceneHotspot *hs = new SceneHotspot();
Modified: scummvm/trunk/engines/lastexpress/data/scene.h
===================================================================
--- scummvm/trunk/engines/lastexpress/data/scene.h 2010-11-11 02:08:17 UTC (rev 54192)
+++ scummvm/trunk/engines/lastexpress/data/scene.h 2010-11-11 03:25:35 UTC (rev 54193)
@@ -151,6 +151,7 @@
uint32 next;
SceneHotspot() {}
+ ~SceneHotspot();
static SceneHotspot *load(Common::SeekableReadStream *stream);
bool isInside(const Common::Point &point);
Modified: scummvm/trunk/engines/lastexpress/game/menu.cpp
===================================================================
--- scummvm/trunk/engines/lastexpress/game/menu.cpp 2010-11-11 02:08:17 UTC (rev 54192)
+++ scummvm/trunk/engines/lastexpress/game/menu.cpp 2010-11-11 03:25:35 UTC (rev 54193)
@@ -383,6 +383,12 @@
_lastHotspot = NULL;
+ // Cleanup frames
+ for (MenuFrames::iterator it = _frames.begin(); it != _frames.end(); it++)
+ SAFE_DELETE(it->_value);
+
+ _frames.clear();
+
// Zero passed pointers
_engine = NULL;
}
Modified: scummvm/trunk/engines/lastexpress/game/savegame.cpp
===================================================================
--- scummvm/trunk/engines/lastexpress/game/savegame.cpp 2010-11-11 02:08:17 UTC (rev 54192)
+++ scummvm/trunk/engines/lastexpress/game/savegame.cpp 2010-11-11 03:25:35 UTC (rev 54193)
@@ -124,7 +124,7 @@
// Read the list of entry headers
if (_savegame->size() > 32) {
- while (!_savegame->eos() && !_savegame->err()) {
+ while (_savegame->pos() < _savegame->size() && !_savegame->eos() && !_savegame->err()) {
// Update sound queue while we go through the savegame
getSound()->updateQueue();
@@ -485,7 +485,10 @@
SavegameMainHeader header;
Common::InSaveFile *save = openForLoading(id);
- return loadMainHeader(save, &header);
+ bool isHeaderValid = loadMainHeader(save, &header);
+ delete save;
+
+ return isHeaderValid;
}
bool SaveLoad::isGameFinished(uint32 menuIndex, uint32 savegameIndex) {
Modified: scummvm/trunk/engines/lastexpress/game/sound.cpp
===================================================================
--- scummvm/trunk/engines/lastexpress/game/sound.cpp 2010-11-11 02:08:17 UTC (rev 54192)
+++ scummvm/trunk/engines/lastexpress/game/sound.cpp 2010-11-11 03:25:35 UTC (rev 54193)
@@ -118,6 +118,8 @@
}
SoundManager::~SoundManager() {
+ _cache.clear();
+
delete _soundStream;
// Zero passed pointers
Modified: scummvm/trunk/engines/lastexpress/lastexpress.cpp
===================================================================
--- scummvm/trunk/engines/lastexpress/lastexpress.cpp 2010-11-11 02:08:17 UTC (rev 54192)
+++ scummvm/trunk/engines/lastexpress/lastexpress.cpp 2010-11-11 03:25:35 UTC (rev 54193)
@@ -292,6 +292,10 @@
}
void LastExpressEngine::setEventHandlers(EventHandler::EventFunction *mouse, EventHandler::EventFunction *tick) {
+ // Cleanup previous event handlers
+ delete eventMouse;
+ delete eventTick;
+
eventMouse = mouse;
eventTick = tick;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list