[Scummvm-cvs-logs] SF.net SVN: scummvm:[55740] scummvm/trunk/engines/sci/graphics

lskovlun at users.sourceforge.net lskovlun at users.sourceforge.net
Wed Feb 2 22:05:38 CET 2011


Revision: 55740
          http://scummvm.svn.sourceforge.net/scummvm/?rev=55740&view=rev
Author:   lskovlun
Date:     2011-02-02 21:05:38 +0000 (Wed, 02 Feb 2011)

Log Message:
-----------
SCI: Fix memory leaks in GfxRobot

Modified Paths:
--------------
    scummvm/trunk/engines/sci/graphics/robot.cpp
    scummvm/trunk/engines/sci/graphics/robot.h

Modified: scummvm/trunk/engines/sci/graphics/robot.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/robot.cpp	2011-02-02 19:56:24 UTC (rev 55739)
+++ scummvm/trunk/engines/sci/graphics/robot.cpp	2011-02-02 21:05:38 UTC (rev 55740)
@@ -68,10 +68,7 @@
 }
 
 GfxRobot::~GfxRobot() {
-	delete[] _resourceData;
-	delete[] _imageStart;
-	delete[] _audioStart;
-	delete[] _audioLen;
+	freeData();
 }
 
 void GfxRobot::init(GuiResourceId resourceId, uint16 x, uint16 y) {
@@ -174,6 +171,7 @@
 	if (_curFrame == _frameCount) {
 		// End of robot video, restore palette
 		g_system->setPalette(_savedPal, 0, 256);
+		freeData();
 		_resourceId = -1;
 	}
 }
@@ -302,7 +300,13 @@
 	}
 }
 
-	
+void GfxRobot::freeData()
+{
+	delete[] _resourceData; _resourceData = 0;
+	delete[] _imageStart; _imageStart = 0;
+	delete[] _audioStart; _audioStart = 0;
+	delete[] _audioLen; _audioLen = 0;
+}	
 #endif
 
 } // End of namespace Sci

Modified: scummvm/trunk/engines/sci/graphics/robot.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/robot.h	2011-02-02 19:56:24 UTC (rev 55739)
+++ scummvm/trunk/engines/sci/graphics/robot.h	2011-02-02 21:05:38 UTC (rev 55740)
@@ -51,6 +51,7 @@
 	void getFrameRect(int frame, Common::Rect &rect); // Not sure what to use this for yet
 	int getFrameScale(int frame); // Scale factor (multiplied by 100). More like custom height, but why use a percentage for it?
 	void setPalette();
+	void freeData();
 
 	ResourceManager *_resMan;
 	GfxScreen *_screen;


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