From ef0b9ff2ccb1b40c23fb90d9feb36d261642eef1 Mon Sep 17 00:00:00 2001 From: Alexander Neundorf Date: Tue, 1 May 2007 11:46:47 -0400 Subject: [PATCH] BUG: fix cmake listfile stack: if a file could not be opened, remove it from the stack (usually CMakeCInformation.cmake and CMakeCXXInformation.cmake which both put Linux-gcc.cmake on the stack without removing it again: INCLUDE(... OPTIONAL) ) STYLE: better readable output formatting of the listfile stack, now in the same order as in gdb or with include files Alex --- Source/cmMakefile.cxx | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) 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