فهرست منبع

BUG: More problems with cmMakefile copy-constructor. It seems the regular expression class cannot be assigned but does not enforce this limitation at compile time.

Brad King 18 سال پیش
والد
کامیت
28e94533dd
2فایلهای تغییر یافته به همراه10 افزوده شده و 6 حذف شده
  1. 9 6
      Source/cmMakefile.cxx
  2. 1 0
      Source/cmMakefile.h

+ 9 - 6
Source/cmMakefile.cxx

@@ -85,9 +85,7 @@ cmMakefile::cmMakefile()
   this->AddSourceGroup("Resources", "\\.plist$");
 #endif
   this->AddDefaultDefinitions();
-  this->cmDefineRegex.compile("#cmakedefine[ \t]+([A-Za-z_0-9]*)");
-  this->cmDefine01Regex.compile("#cmakedefine01[ \t]+([A-Za-z_0-9]*)");
-  this->cmAtVarRegex.compile("(@[A-Za-z_0-9/.+-]+@)");
+  this->Initialize();
   this->PreOrder = false;
 }
 
@@ -131,11 +129,16 @@ cmMakefile::cmMakefile(const cmMakefile& mf)
   this->Properties = mf.Properties;
   this->PreOrder = mf.PreOrder;
   this->ListFileStack = mf.ListFileStack;
-  this->cmDefineRegex = mf.cmDefineRegex;
-  this->cmDefine01Regex = mf.cmDefine01Regex;
-  this->cmAtVarRegex = mf.cmAtVarRegex;
+  this->Initialize();
 }
 
+//----------------------------------------------------------------------------
+void cmMakefile::Initialize()
+{
+  this->cmDefineRegex.compile("#cmakedefine[ \t]+([A-Za-z_0-9]*)");
+  this->cmDefine01Regex.compile("#cmakedefine01[ \t]+([A-Za-z_0-9]*)");
+  this->cmAtVarRegex.compile("(@[A-Za-z_0-9/.+-]+@)");
+}
 
 unsigned int cmMakefile::GetCacheMajorVersion()
 {

+ 1 - 0
Source/cmMakefile.h

@@ -783,6 +783,7 @@ protected:
   bool IsFunctionBlocked(const cmListFileFunction& lff);
   
 private:
+  void Initialize();
 
   void ReadSources(std::ifstream& fin, bool t);
   friend class cmMakeDepend;    // make depend needs direct access