소스 검색

ENH: Improved error handling when GetError is called on a command that has not called SetError.

Brad King 24 년 전
부모
커밋
ce484264de
3개의 변경된 파일20개의 추가작업 그리고 3개의 파일을 삭제
  1. 8 1
      Source/cmCommand.h
  2. 10 1
      Source/cmSystemTools.cxx
  3. 2 1
      Source/cmSystemTools.h

+ 8 - 1
Source/cmCommand.h

@@ -120,7 +120,14 @@ public:
    * Return the last error string.
    */
   const char* GetError() 
-    {return m_Error.c_str();}
+    {
+      if(m_Error.length() == 0)
+        {
+        std::string m_Error = this->GetName();
+        m_Error += " uknown error.";
+        }
+      return m_Error.c_str();
+    }
 
   /**
    * Returns true if this class is the given class, or a subclass of it.

+ 10 - 1
Source/cmSystemTools.cxx

@@ -358,7 +358,8 @@ void cmSystemTools::GetArguments(std::string& line,
     }
 }
 
-void cmSystemTools::Error(const char* m1, const char* m2)
+void cmSystemTools::Error(const char* m1, const char* m2,
+                          const char* m3, const char* m4)
 {
   std::string message = "CMake Error: ";
   if(m1)
@@ -369,6 +370,14 @@ void cmSystemTools::Error(const char* m1, const char* m2)
     {
     message += m2;
     }
+  if(m3)
+    {
+    message += m3;
+    }
+  if(m4)
+    {
+    message += m4;
+    }
   cmSystemTools::s_ErrorOccured = true;
 #if defined(_WIN32) && !defined(__CYGWIN__)
   ::MessageBox(0, message.c_str(), 0, MB_OK);

+ 2 - 1
Source/cmSystemTools.h

@@ -94,7 +94,8 @@ public:
   /**
    * Display an error message.
    */
-  static void Error(const char* m, const char* m2=0 );
+  static void Error(const char* m, const char* m2=0,
+                    const char* m3=0, const char* m4=0);
 
   ///! Return true if there was an error at any point.
   static bool GetErrorOccuredFlag()