[Scummvm-cvs-logs] SF.net SVN: scummvm:[54196] scummvm/trunk/engines/lastexpress
littleboy at users.sourceforge.net
littleboy at users.sourceforge.net
Thu Nov 11 07:18:24 CET 2010
Revision: 54196
http://scummvm.svn.sourceforge.net/scummvm/?rev=54196&view=rev
Author: littleboy
Date: 2010-11-11 06:18:23 +0000 (Thu, 11 Nov 2010)
Log Message:
-----------
LASTEXPRESS: Fix more memory leaks
- Missing deallocation of queued frames in SceneManager
- Leaking functor on each call to entity setup functions
- Add SoundEntry destructor & better Entity cleanup
as reported by digitall
Modified Paths:
--------------
scummvm/trunk/engines/lastexpress/entities/entity.cpp
scummvm/trunk/engines/lastexpress/entities/entity_intern.h
scummvm/trunk/engines/lastexpress/game/scenes.cpp
scummvm/trunk/engines/lastexpress/game/sound.h
Modified: scummvm/trunk/engines/lastexpress/entities/entity.cpp
===================================================================
--- scummvm/trunk/engines/lastexpress/entities/entity.cpp 2010-11-11 05:18:40 UTC (rev 54195)
+++ scummvm/trunk/engines/lastexpress/entities/entity.cpp 2010-11-11 06:18:23 UTC (rev 54196)
@@ -150,8 +150,10 @@
Entity::~Entity() {
for (uint i = 0; i < _callbacks.size(); i++)
- delete _callbacks[i];
+ SAFE_DELETE(_callbacks[i]);
+ _callbacks.clear();
+
delete _data;
// Zero-out passed pointers
Modified: scummvm/trunk/engines/lastexpress/entities/entity_intern.h
===================================================================
--- scummvm/trunk/engines/lastexpress/entities/entity_intern.h 2010-11-11 05:18:40 UTC (rev 54195)
+++ scummvm/trunk/engines/lastexpress/entities/entity_intern.h 2010-11-11 06:18:23 UTC (rev 54196)
@@ -83,7 +83,7 @@
}
#define BEGIN_SETUP(class, name, index, type) \
- _engine->getGameLogic()->getGameState()->getGameSavePoints()->setCallback(_entityIndex, new ENTITY_CALLBACK(class, name, this)); \
+ _engine->getGameLogic()->getGameState()->getGameSavePoints()->setCallback(_entityIndex, _callbacks[index]); \
_data->setCurrentCallback(index); \
_data->resetCurrentParameters<type>();
Modified: scummvm/trunk/engines/lastexpress/game/scenes.cpp
===================================================================
--- scummvm/trunk/engines/lastexpress/game/scenes.cpp 2010-11-11 05:18:40 UTC (rev 54195)
+++ scummvm/trunk/engines/lastexpress/game/scenes.cpp 2010-11-11 06:18:23 UTC (rev 54196)
@@ -62,6 +62,10 @@
SAFE_DELETE(_clockHours);
SAFE_DELETE(_clockMinutes);
+ // Clear frame queue
+ for (Common::List<SequenceFrame *>::iterator i = _queue.begin(); i != _queue.end(); ++i)
+ SAFE_DELETE(*i);
+
// Zero-out passed pointers
_engine = NULL;
}
Modified: scummvm/trunk/engines/lastexpress/game/sound.h
===================================================================
--- scummvm/trunk/engines/lastexpress/game/sound.h 2010-11-11 05:18:40 UTC (rev 54195)
+++ scummvm/trunk/engines/lastexpress/game/sound.h 2010-11-11 06:18:23 UTC (rev 54196)
@@ -284,6 +284,11 @@
isStreamed = false;
}
+
+ ~SoundEntry() {
+ delete stream;
+ //delete subtitle;
+ }
};
// Engine
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