diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index a698b6abb..e8a6eb999 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -446,10 +446,12 @@ bool cmMakefile::ReadListFile(const char* filename_in, // push the listfile onto the stack this->ListFileStack.push_back(filenametoread); - + cmListFile cacheFile; if( !cacheFile.ParseFile(filenametoread, requireProjectCommand) ) { + // pop the listfile off the stack + this->ListFileStack.pop_back(); this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentParentFile.c_str()); this->AddDefinition("CMAKE_CURRENT_LIST_FILE", currentFile.c_str()); return false; @@ -2753,17 +2755,20 @@ std::vector *cmMakefile::GetTests() std::string cmMakefile::GetListFileStack() { - std::string tmp; - for (std::deque::iterator i = this->ListFileStack.begin(); - i != this->ListFileStack.end(); ++i) + cmOStringStream tmp; + unsigned int depth = this->ListFileStack.size(); + std::deque::iterator it = this->ListFileStack.end(); + do { - if (i != this->ListFileStack.begin()) - { - tmp += ";"; - } - tmp += *i; + --it; + tmp << "\n["; + tmp << depth; + tmp << "]\t"; + tmp << *it; + depth--; } - return tmp; + while (it != this->ListFileStack.begin()); + return tmp.str(); } // define properties