diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 15a37105e..836667c28 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -586,7 +586,12 @@ bool cmMakefile::ReadListFile(const char* listfile, this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); - this->ReadListFileInternal(listFile, filenametoread.c_str(), noPolicyScope); + IncludeScope incScope(this, filenametoread.c_str(), noPolicyScope); + this->ReadListFileInternal(listFile); + if(cmSystemTools::GetFatalErrorOccured()) + { + incScope.Quiet(); + } this->CheckForUnusedVariables(); this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentParentFile.c_str()); @@ -600,12 +605,9 @@ bool cmMakefile::ReadListFile(const char* listfile, return true; } -void cmMakefile::ReadListFileInternal(cmListFile const& listFile, - const char* filenametoread, - bool noPolicyScope) +void cmMakefile::ReadListFileInternal(cmListFile const& listFile) { // Enforce balanced blocks (if/endif, function/endfunction, etc.). - IncludeScope incScope(this, filenametoread, noPolicyScope); LexicalPushPop lexScope(this); // Run the parsed commands. @@ -618,7 +620,6 @@ void cmMakefile::ReadListFileInternal(cmListFile const& listFile, { // Exit early due to error. lexScope.Quiet(); - incScope.Quiet(); break; } if(status.GetReturnInvoked()) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index b80a1eea8..2db7c93f9 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -918,9 +918,7 @@ private: bool noPolicyScope, bool requireProjectCommand); - void ReadListFileInternal(cmListFile const& listFile, - const char* filenametoread, - bool noPolicyScope); + void ReadListFileInternal(cmListFile const& listFile); bool ParseDefineFlag(std::string const& definition, bool remove);