BUG: Avoid infinite loop at directory tree root

The system tools GetParentDirectory method no longer removes the root
path component.  This fixes cmSystemTools::FileExistsInParentDirectories
to not infinitely loop at when GetParentDirectory stops at the root.
This commit is contained in:
Brad King 2009-04-21 11:37:09 -04:00
parent 714d2fc04b
commit 13e454f8d3

View File

@ -1104,7 +1104,8 @@ std::string cmSystemTools::FileExistsInParentDirectories(const char* fname,
SystemTools::ConvertToUnixSlashes(file); SystemTools::ConvertToUnixSlashes(file);
std::string dir = directory; std::string dir = directory;
SystemTools::ConvertToUnixSlashes(dir); SystemTools::ConvertToUnixSlashes(dir);
while ( !dir.empty() ) std::string prevDir;
while(dir != prevDir)
{ {
std::string path = dir + "/" + file; std::string path = dir + "/" + file;
if ( SystemTools::FileExists(path.c_str()) ) if ( SystemTools::FileExists(path.c_str()) )
@ -1115,6 +1116,7 @@ std::string cmSystemTools::FileExistsInParentDirectories(const char* fname,
{ {
break; break;
} }
prevDir = dir;
dir = SystemTools::GetParentDirectory(dir.c_str()); dir = SystemTools::GetParentDirectory(dir.c_str());
} }
return ""; return "";