[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