summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalGenerator.cxx
diff options
context:
space:
mode:
authorKyle Edwards <kyle.edwards@kitware.com>2018-12-14 22:24:52 (GMT)
committerKyle Edwards <kyle.edwards@kitware.com>2019-01-23 14:52:29 (GMT)
commita6982cff0d3910723ad4fd40b9c63cf77c872d30 (patch)
treeb1e69a204006b7b1521c2994ff52b6c3e79b9715 /Source/cmGlobalGenerator.cxx
parenta7f5cd45e135dd51d67176fc40e2d769ac5f7db8 (diff)
downloadCMake-a6982cff0d3910723ad4fd40b9c63cf77c872d30.zip
CMake-a6982cff0d3910723ad4fd40b9c63cf77c872d30.tar.gz
CMake-a6982cff0d3910723ad4fd40b9c63cf77c872d30.tar.bz2
cmMakefile: Impose maximum recursion limit
In order to keep infinitely-recursive scripts from causing a stack overflow in the CMake executable, CMake now imposes a maximum recursion limit before issuing an error message. The limit can be adjusted at runtime with CMAKE_MAXIMUM_RECURSION_DEPTH. Fixes: #18694
Diffstat (limited to 'Source/cmGlobalGenerator.cxx')
-rw-r--r--Source/cmGlobalGenerator.cxx3
1 files changed, 3 insertions, 0 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index b2b0e38..acd666f 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -98,6 +98,8 @@ cmGlobalGenerator::cmGlobalGenerator(cmake* cm)
this->ConfigureDoneCMP0026AndCMP0024 = false;
this->FirstTimeProgress = 0.0f;
+ this->RecursionDepth = 0;
+
cm->GetState()->SetIsGeneratorMultiConfig(false);
cm->GetState()->SetMinGWMake(false);
cm->GetState()->SetMSYSShell(false);
@@ -1166,6 +1168,7 @@ void cmGlobalGenerator::Configure()
this->CMakeInstance->GetHomeOutputDirectory());
cmMakefile* dirMf = new cmMakefile(this, snapshot);
+ dirMf->SetRecursionDepth(this->RecursionDepth);
this->Makefiles.push_back(dirMf);
this->IndexMakefile(dirMf);