Browse Source

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 years ago
parent
commit
28e94533dd
2 changed files with 10 additions and 6 deletions
  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