[Scummvm-cvs-logs] SF.net SVN: scummvm:[54916] scummvm/trunk/engines/sci/resource.cpp

tdhs at users.sourceforge.net tdhs at users.sourceforge.net
Wed Dec 15 00:30:22 CET 2010


Revision: 54916
          http://scummvm.svn.sourceforge.net/scummvm/?rev=54916&view=rev
Author:   tdhs
Date:     2010-12-14 23:30:22 +0000 (Tue, 14 Dec 2010)

Log Message:
-----------
SCI: Close Memory Leaks in SCI Resource Loading, reported by Valgrind.

Modified Paths:
--------------
    scummvm/trunk/engines/sci/resource.cpp

Modified: scummvm/trunk/engines/sci/resource.cpp
===================================================================
--- scummvm/trunk/engines/sci/resource.cpp	2010-12-14 23:12:10 UTC (rev 54915)
+++ scummvm/trunk/engines/sci/resource.cpp	2010-12-14 23:30:22 UTC (rev 54916)
@@ -195,6 +195,7 @@
 
 Resource::~Resource() {
 	delete[] data;
+	delete[] _header;
 	if (_source && _source->getSourceType() == kSourcePatch)
 		delete _source;
 }
@@ -1091,8 +1092,10 @@
 					fileStream = file;
 			}
 			break;
-		} else if (rsrc->getSourceType() == kSourceMacResourceFork)
+		} else if (rsrc->getSourceType() == kSourceMacResourceFork) {
+			delete fileStream;
 			return kResVersionSci11Mac;
+		}
 	}
 
 	if (!fileStream)
@@ -1106,9 +1109,12 @@
 		// check if 0 or 01 - try to read resources in SCI0 format and see if exists
 		fileStream->seek(0, SEEK_SET);
 		while (fileStream->read(buff, 6) == 6 && !(buff[0] == 0xFF && buff[1] == 0xFF && buff[2] == 0xFF)) {
-			if (findVolume(rsrc, (buff[5] & 0xFC) >> 2) == NULL)
+			if (findVolume(rsrc, (buff[5] & 0xFC) >> 2) == NULL) {
+				delete fileStream;
 				return kResVersionSci1Middle;
+			}
 		}
+		delete fileStream;
 		return kResVersionSci0Sci1Early;
 	}
 


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