[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