[Scummvm-cvs-logs] SF.net SVN: scummvm:[41859] scummvm/trunk/engines/gob

drmccoy at users.sourceforge.net drmccoy at users.sourceforge.net
Thu Jun 25 12:54:35 CEST 2009


Revision: 41859
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41859&view=rev
Author:   drmccoy
Date:     2009-06-25 10:54:35 +0000 (Thu, 25 Jun 2009)

Log Message:
-----------
Plugging some memory leaks

Modified Paths:
--------------
    scummvm/trunk/engines/gob/game.cpp
    scummvm/trunk/engines/gob/inter_v3.cpp
    scummvm/trunk/engines/gob/resources.cpp
    scummvm/trunk/engines/gob/scenery.cpp
    scummvm/trunk/engines/gob/sound/sounddesc.cpp

Modified: scummvm/trunk/engines/gob/game.cpp
===================================================================
--- scummvm/trunk/engines/gob/game.cpp	2009-06-25 10:03:23 UTC (rev 41858)
+++ scummvm/trunk/engines/gob/game.cpp	2009-06-25 10:54:35 UTC (rev 41859)
@@ -95,6 +95,18 @@
 }
 
 Game::~Game() {
+	for (int i = 0; i < 5; i++) {
+		warning("%d", i);
+		if (_scriptArray[i] != _script) {
+			warning("DELETE (%d)", _scriptArray[i] != 0);
+			delete _scriptArray[i];
+		}
+		if (_resourcesArray[i] != _resources) {
+			warning("DELETE (%d)", _resourcesArray[i] != 0);
+			delete _resourcesArray[i];
+		}
+	}
+
 	delete _script;
 	delete _resources;
 }

Modified: scummvm/trunk/engines/gob/inter_v3.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_v3.cpp	2009-06-25 10:03:23 UTC (rev 41858)
+++ scummvm/trunk/engines/gob/inter_v3.cpp	2009-06-25 10:54:35 UTC (rev 41859)
@@ -217,8 +217,10 @@
 				if (((*totData != 2) && (*totData != 5)) ||
 						(ABS(offY - READ_LE_UINT16(totData + 3)) > 1)) {
 
-					if (curPart == part)
+					if (curPart == part) {
+						delete textItem;
 						return false;
+					}
 
 					stringVar = stringStartVar;
 					WRITE_VARO_UINT8(stringVar, 0);

Modified: scummvm/trunk/engines/gob/resources.cpp
===================================================================
--- scummvm/trunk/engines/gob/resources.cpp	2009-06-25 10:03:23 UTC (rev 41858)
+++ scummvm/trunk/engines/gob/resources.cpp	2009-06-25 10:54:35 UTC (rev 41859)
@@ -678,6 +678,7 @@
 		return 0;
 	}
 
+	delete stream;
 	return data;
 }
 
@@ -698,6 +699,7 @@
 		return 0;
 	}
 
+	delete stream;
 	return data;
 }
 

Modified: scummvm/trunk/engines/gob/scenery.cpp
===================================================================
--- scummvm/trunk/engines/gob/scenery.cpp	2009-06-25 10:03:23 UTC (rev 41858)
+++ scummvm/trunk/engines/gob/scenery.cpp	2009-06-25 10:54:35 UTC (rev 41859)
@@ -963,6 +963,8 @@
 		pieceDesc[i].top    = resource->stream()->readSint16LE();
 		pieceDesc[i].bottom = resource->stream()->readSint16LE();
 	}
+
+	delete resource;
 }
 
 } // End of namespace Gob

Modified: scummvm/trunk/engines/gob/sound/sounddesc.cpp
===================================================================
--- scummvm/trunk/engines/gob/sound/sounddesc.cpp	2009-06-25 10:03:23 UTC (rev 41858)
+++ scummvm/trunk/engines/gob/sound/sounddesc.cpp	2009-06-25 10:54:35 UTC (rev 41859)
@@ -101,10 +101,16 @@
 }
 
 void SoundDesc::free() {
-	delete _resource;
+	if (_resource) {
+		delete _resource;
+		_data = 0;
+	}
 
+	delete[] _data;
+
 	_resource = 0;
-	_data = _dataPtr = 0;
+	_data = 0;
+	_dataPtr = 0;
 	_id = 0;
 }
 


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