瀏覽代碼

BUG: Fixed crash when CMAKE_ROOT cannot be found.

Brad King 23 年之前
父節點
當前提交
486454ef78

+ 9 - 1
Source/CursesDialog/ccmake.cxx

@@ -127,7 +127,15 @@ int main(int argc, char** argv)
   cmCursesMainForm* myform;
 
   myform = new cmCursesMainForm(args, x);
-  myform->LoadCache(cacheDir.c_str());
+  if(myform->LoadCache(cacheDir.c_str()))
+    {
+    curses_clear();
+    touchwin(stdscr);
+    endwin();
+    delete myform;
+    std::cerr << "Error running cmake::LoadCache().  Aboriting.\n";
+    return 1;
+    }
 
   cmSystemTools::SetErrorCallback(CMakeErrorHandler, myform);
 

+ 7 - 2
Source/CursesDialog/cmCursesMainForm.cxx

@@ -1058,11 +1058,16 @@ void cmCursesMainForm::HandleInput()
     }
 }
 
-void cmCursesMainForm::LoadCache(const char *)
+int cmCursesMainForm::LoadCache(const char *)
 
 {
-  m_CMakeInstance->LoadCache(); 
+  int r = m_CMakeInstance->LoadCache(); 
+  if(r < 0)
+    {
+    return r;
+    }
   m_CMakeInstance->SetCacheArgs(m_Args);
+  return r;
 }
   
 

+ 1 - 1
Source/CursesDialog/cmCursesMainForm.h

@@ -101,7 +101,7 @@ public:
   /**
    * Used by main program
    */
-  void LoadCache(const char *dir);
+  int LoadCache(const char *dir);
   
   /**
    * Progress callback

+ 5 - 1
Source/cmake.cxx

@@ -924,7 +924,11 @@ int cmake::Run(const std::vector<std::string>& args)
   m_CMakeCommand = args[0];
   
   // load the cache
-  this->LoadCache();
+  if(this->LoadCache() < 0)
+    {
+    cmSystemTools::Error("Error executing cmake::LoadCache().  Aborting.\n");
+    return -1;
+    }
   
   // Add any cache args
   this->SetCacheArgs(args);