From 2387a642e50d5fb39ae370dd29cbee0083529813 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 11 Nov 2007 08:08:40 +0000 Subject: Committed patch #1829748 "Fix for memory leaks in File::exists". svn-id: r29474 --- common/file.cpp | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'common/file.cpp') diff --git a/common/file.cpp b/common/file.cpp index be557ff634..2bf65abf62 100644 --- a/common/file.cpp +++ b/common/file.cpp @@ -412,33 +412,28 @@ bool File::open(const FilesystemNode &node, AccessMode mode) { } 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(); } } -- cgit v1.2.3