[Scummvm-cvs-logs] SF.net SVN: scummvm:[54270] scummvm/trunk/engines/lastexpress

littleboy at users.sourceforge.net littleboy at users.sourceforge.net
Tue Nov 16 15:07:00 CET 2010


Revision: 54270
          http://scummvm.svn.sourceforge.net/scummvm/?rev=54270&view=rev
Author:   littleboy
Date:     2010-11-16 14:06:59 +0000 (Tue, 16 Nov 2010)

Log Message:
-----------
LASTEXPRESS: Fix SequenceFrame leak in Entities code

 - Add EntityCallData destructor to dispose of frames & Sequences
 - Properly dispose of frames in Entities::resetSequences()

Modified Paths:
--------------
    scummvm/trunk/engines/lastexpress/entities/entity.cpp
    scummvm/trunk/engines/lastexpress/entities/entity.h
    scummvm/trunk/engines/lastexpress/game/entities.cpp

Modified: scummvm/trunk/engines/lastexpress/entities/entity.cpp
===================================================================
--- scummvm/trunk/engines/lastexpress/entities/entity.cpp	2010-11-16 11:10:31 UTC (rev 54269)
+++ scummvm/trunk/engines/lastexpress/entities/entity.cpp	2010-11-16 14:06:59 UTC (rev 54270)
@@ -27,6 +27,8 @@
 
 #include "lastexpress/entities/entity_intern.h"
 
+#include "lastexpress/data/sequence.h"
+
 #include "lastexpress/game/action.h"
 #include "lastexpress/game/entities.h"
 #include "lastexpress/game/logic.h"
@@ -46,6 +48,15 @@
 // EntityData
 //////////////////////////////////////////////////////////////////////////
 
+EntityData::EntityCallData::~EntityCallData() {
+	SAFE_DELETE(frame);
+	SAFE_DELETE(frame1);
+
+	SAFE_DELETE(sequence);
+	SAFE_DELETE(sequence2);
+	SAFE_DELETE(sequence3);
+}
+
 void EntityData::EntityCallData::saveLoadWithSerializer(Common::Serializer &s) {
 	for (uint i = 0; i < ARRAYSIZE(callbacks); i++)
 		s.syncAsByte(callbacks[i]);

Modified: scummvm/trunk/engines/lastexpress/entities/entity.h
===================================================================
--- scummvm/trunk/engines/lastexpress/entities/entity.h	2010-11-16 11:10:31 UTC (rev 54269)
+++ scummvm/trunk/engines/lastexpress/entities/entity.h	2010-11-16 14:06:59 UTC (rev 54270)
@@ -570,6 +570,8 @@
 			sequence3 = NULL;
 		}
 
+		~EntityCallData();
+
 		/**
 		 * Convert this object into a string representation.
 		 *

Modified: scummvm/trunk/engines/lastexpress/game/entities.cpp
===================================================================
--- scummvm/trunk/engines/lastexpress/game/entities.cpp	2010-11-16 11:10:31 UTC (rev 54269)
+++ scummvm/trunk/engines/lastexpress/game/entities.cpp	2010-11-16 14:06:59 UTC (rev 54270)
@@ -607,10 +607,8 @@
 		getData(entityIndex)->currentFrame = -1;
 	}
 
-	// FIXME: in the original engine, the sequence pointers might just be copies,
-	// make sure we free the associated memory at some point
-	getData(entityIndex)->frame = NULL;
-	getData(entityIndex)->frame1 = NULL;
+	SAFE_DELETE(getData(entityIndex)->frame);
+	SAFE_DELETE(getData(entityIndex)->frame1);
 
 	SAFE_DELETE(getData(entityIndex)->sequence);
 	SAFE_DELETE(getData(entityIndex)->sequence2);


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