소스 검색

ENH: fix memory leak

Bill Hoffman 18 년 전
부모
커밋
8b07c96090
1개의 변경된 파일5개의 추가작업 그리고 3개의 파일을 삭제
  1. 5 3
      Source/cmake.cxx

+ 5 - 3
Source/cmake.cxx

@@ -2406,12 +2406,14 @@ int cmake::CheckBuildSystem()
     {
     genName = "Unix Makefiles";
     }
-  cmGlobalGenerator *ggd = this->CreateGlobalGenerator(genName);
-  if (ggd)
+  // this global generator is never set to the cmake object so it is never
+  // deleted, so make it an auto_ptr
+  std::auto_ptr<cmGlobalGenerator> ggd(this->CreateGlobalGenerator(genName));
+  if (ggd.get())
     {
     // Check the dependencies in case source files were removed.
     std::auto_ptr<cmLocalGenerator> lgd(ggd->CreateLocalGenerator());
-    lgd->SetGlobalGenerator(ggd);
+    lgd->SetGlobalGenerator(ggd.get());
     lgd->CheckDependencies(mf, verbose, this->ClearBuildSystem);
 
     // Check for multiple output pairs.