[Scummvm-cvs-logs] SF.net SVN: scummvm: [29474] scummvm/trunk/common/file.cpp

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun Nov 11 09:08:41 CET 2007


Revision: 29474
          http://scummvm.svn.sourceforge.net/scummvm/?rev=29474&view=rev
Author:   lordhoto
Date:     2007-11-11 00:08:40 -0800 (Sun, 11 Nov 2007)

Log Message:
-----------
Committed patch #1829748 "Fix for memory leaks in File::exists".

Modified Paths:
--------------
    scummvm/trunk/common/file.cpp

Modified: scummvm/trunk/common/file.cpp
===================================================================
--- scummvm/trunk/common/file.cpp	2007-11-11 01:04:40 UTC (rev 29473)
+++ scummvm/trunk/common/file.cpp	2007-11-11 08:08:40 UTC (rev 29474)
@@ -412,33 +412,28 @@
 }
 
 bool File::exists(const String &filename) {
-	FilesystemNode* file;
-	String fname = filename;
-	
 	// First try to find the file via a FilesystemNode (in case an absolute
 	// path was passed). This is only used to filter out directories.
-	file = new FilesystemNode(fname);
-	if (file->exists())
-		return !file->isDirectory();
+	FilesystemNode file(filename);
+	if (file.exists())
+		return !file.isDirectory();
 	
 	// See if the file is already mapped
-	if (_filesMap && _filesMap->contains(fname)) {
-		fname = (*_filesMap)[fname];
-		file = new FilesystemNode(fname);
+	if (_filesMap && _filesMap->contains(filename)) {
+		FilesystemNode file2((*_filesMap)[filename]);
 		
-		if (file->exists())
-			return !file->isDirectory();
+		if (file2.exists())
+			return !file2.isDirectory();
 	}
 	
 	// Try all default directories
 	if (_defaultDirectories) {
 		StringIntMap::const_iterator i(_defaultDirectories->begin());
 		for (; i != _defaultDirectories->end(); ++i) {
-			fname = i->_key+fname;
-			file = new FilesystemNode(fname);
+			FilesystemNode file2(i->_key + filename);
 			
-			if(file->exists())
-				return !file->isDirectory();
+			if(file2.exists())
+				return !file2.isDirectory();
 		}
 	}
 	


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