diff options
| -rw-r--r-- | engines/lastexpress/data/scene.cpp | 8 | ||||
| -rw-r--r-- | engines/lastexpress/data/scene.h | 1 | ||||
| -rw-r--r-- | engines/lastexpress/game/menu.cpp | 6 | ||||
| -rw-r--r-- | engines/lastexpress/game/savegame.cpp | 7 | ||||
| -rw-r--r-- | engines/lastexpress/game/sound.cpp | 2 | ||||
| -rw-r--r-- | engines/lastexpress/lastexpress.cpp | 4 | 
6 files changed, 26 insertions, 2 deletions
diff --git a/engines/lastexpress/data/scene.cpp b/engines/lastexpress/data/scene.cpp index 8e90d93828..47266358f2 100644 --- a/engines/lastexpress/data/scene.cpp +++ b/engines/lastexpress/data/scene.cpp @@ -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(); diff --git a/engines/lastexpress/data/scene.h b/engines/lastexpress/data/scene.h index c4a34e127b..d4c8e7d0da 100644 --- a/engines/lastexpress/data/scene.h +++ b/engines/lastexpress/data/scene.h @@ -151,6 +151,7 @@ public:  	uint32 next;  	SceneHotspot() {} +	~SceneHotspot();  	static SceneHotspot *load(Common::SeekableReadStream *stream);  	bool isInside(const Common::Point &point); diff --git a/engines/lastexpress/game/menu.cpp b/engines/lastexpress/game/menu.cpp index f6840c28a7..6ca4f22177 100644 --- a/engines/lastexpress/game/menu.cpp +++ b/engines/lastexpress/game/menu.cpp @@ -383,6 +383,12 @@ Menu::~Menu() {  	_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;  } diff --git a/engines/lastexpress/game/savegame.cpp b/engines/lastexpress/game/savegame.cpp index 224d91eddd..f5b512f5ee 100644 --- a/engines/lastexpress/game/savegame.cpp +++ b/engines/lastexpress/game/savegame.cpp @@ -124,7 +124,7 @@ uint32 SaveLoad::init(GameId id, bool resetHeaders) {  	// 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 @@ bool SaveLoad::isSavegameValid(GameId id) {  	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) { diff --git a/engines/lastexpress/game/sound.cpp b/engines/lastexpress/game/sound.cpp index 0dfc38b1b0..2249109fe9 100644 --- a/engines/lastexpress/game/sound.cpp +++ b/engines/lastexpress/game/sound.cpp @@ -118,6 +118,8 @@ SoundManager::SoundManager(LastExpressEngine *engine) : _engine(engine), _state(  }  SoundManager::~SoundManager() { +	_cache.clear(); +  	delete _soundStream;  	// Zero passed pointers diff --git a/engines/lastexpress/lastexpress.cpp b/engines/lastexpress/lastexpress.cpp index 2ccdc14fbd..b2809a2b99 100644 --- a/engines/lastexpress/lastexpress.cpp +++ b/engines/lastexpress/lastexpress.cpp @@ -292,6 +292,10 @@ void LastExpressEngine::restoreEventHandlers() {  }  void LastExpressEngine::setEventHandlers(EventHandler::EventFunction *mouse, EventHandler::EventFunction *tick) { +	// Cleanup previous event handlers +	delete eventMouse; +	delete eventTick; +  	eventMouse = mouse;  	eventTick = tick;  }  | 
