From e9d7ebb3ec751528a422108b20dc3c24fcd39530 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 28 Jul 2009 10:47:02 -0400 Subject: [PATCH] BUG: Do not double-initialize local generators All global generator CreateLocalGenerator methods automatically initialize the local generator instances with SetGlobalGenerator. In several places we were calling SetGlobalGenerator again after receiving the return value from CreateLocalGenerator. The double-initializations leaked the resources allocated by the first call to SetGlobalGenerator. This fix removes the unnecessary calls. --- Source/CPack/cmCPackGenerator.cxx | 1 - Source/CTest/cmCTestScriptHandler.cxx | 1 - Source/CTest/cmCTestTestHandler.cxx | 1 - Source/cmCTest.cxx | 1 - Source/cmake.cxx | 5 ----- 5 files changed, 9 deletions(-) diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index a8d500cd5..509fdb99e 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -623,7 +623,6 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects( cmGlobalGenerator gg; gg.SetCMakeInstance(&cm); std::auto_ptr lg(gg.CreateLocalGenerator()); - lg->SetGlobalGenerator(&gg); cmMakefile *mf = lg->GetMakefile(); std::string realInstallDirectory = tempInstallDirectory; if ( !installSubDirectory.empty() && installSubDirectory != "/" ) diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx index 12e70058a..4ba9e6819 100644 --- a/Source/CTest/cmCTestScriptHandler.cxx +++ b/Source/CTest/cmCTestScriptHandler.cxx @@ -335,7 +335,6 @@ void cmCTestScriptHandler::CreateCMake() this->GlobalGenerator->SetCMakeInstance(this->CMake); this->LocalGenerator = this->GlobalGenerator->CreateLocalGenerator(); - this->LocalGenerator->SetGlobalGenerator(this->GlobalGenerator); this->Makefile = this->LocalGenerator->GetMakefile(); // remove all cmake commands which are not scriptable, since they can't be diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index da3fd5e74..1e4137180 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1970,7 +1970,6 @@ void cmCTestTestHandler::GetListOfTests() cmGlobalGenerator gg; gg.SetCMakeInstance(&cm); std::auto_ptr lg(gg.CreateLocalGenerator()); - lg->SetGlobalGenerator(&gg); cmMakefile *mf = lg->GetMakefile(); mf->AddDefinition("CTEST_CONFIGURATION_TYPE", this->CTest->GetConfigType().c_str()); diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 5c058d4e3..abf47a21c 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -350,7 +350,6 @@ int cmCTest::Initialize(const char* binary_dir, bool new_tag, cmGlobalGenerator gg; gg.SetCMakeInstance(&cm); std::auto_ptr lg(gg.CreateLocalGenerator()); - lg->SetGlobalGenerator(&gg); cmMakefile *mf = lg->GetMakefile(); if ( !this->ReadCustomConfigurationFileTree(this->BinaryDir.c_str(), mf) ) { diff --git a/Source/cmake.cxx b/Source/cmake.cxx index efc8da0d7..649bdf86a 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -500,7 +500,6 @@ void cmake::ReadListFile(const char *path) if(path) { std::auto_ptr lg(gg->CreateLocalGenerator()); - lg->SetGlobalGenerator(gg); lg->GetMakefile()->SetHomeOutputDirectory (cmSystemTools::GetCurrentWorkingDirectory().c_str()); lg->GetMakefile()->SetStartOutputDirectory @@ -1532,7 +1531,6 @@ int cmake::ExecuteCMakeCommand(std::vector& args) { cm.SetGlobalGenerator(ggd); std::auto_ptr lgd(ggd->CreateLocalGenerator()); - lgd->SetGlobalGenerator(ggd); lgd->GetMakefile()->SetStartDirectory(startDir.c_str()); lgd->GetMakefile()->SetStartOutputDirectory(startOutDir.c_str()); lgd->GetMakefile()->MakeStartDirectoriesCurrent(); @@ -2625,7 +2623,6 @@ int cmake::CheckBuildSystem() cmGlobalGenerator gg; gg.SetCMakeInstance(&cm); std::auto_ptr lg(gg.CreateLocalGenerator()); - lg->SetGlobalGenerator(&gg); cmMakefile* mf = lg->GetMakefile(); if(!mf->ReadListFile(0, this->CheckBuildSystemArgument.c_str()) || cmSystemTools::GetErrorOccuredFlag()) @@ -2656,7 +2653,6 @@ int cmake::CheckBuildSystem() if(ggd.get()) { std::auto_ptr lgd(ggd->CreateLocalGenerator()); - lgd->SetGlobalGenerator(ggd.get()); lgd->ClearDependencies(mf, verbose); } } @@ -2895,7 +2891,6 @@ void cmake::GenerateGraphViz(const char* fileName) const cmGlobalGenerator ggi; ggi.SetCMakeInstance(&cm); std::auto_ptr lg(ggi.CreateLocalGenerator()); - lg->SetGlobalGenerator(&ggi); cmMakefile *mf = lg->GetMakefile(); std::string infile = this->GetHomeOutputDirectory();