Browse Source

Merge topic 'fix-wix-cpack-crash'

cb59f5da CPackWIX: Delay creation of cmWIXPatch until CPack has initialized Logger
Brad King 11 years ago
parent
commit
658cc11cf1
2 changed files with 16 additions and 6 deletions
  1. 14 5
      Source/CPack/WiX/cmCPackWIXGenerator.cxx
  2. 2 1
      Source/CPack/WiX/cmCPackWIXGenerator.h

+ 14 - 5
Source/CPack/WiX/cmCPackWIXGenerator.cxx

@@ -33,14 +33,23 @@
 
 cmCPackWIXGenerator::cmCPackWIXGenerator():
   HasDesktopShortcuts(false),
-  Patch(Logger)
+  Patch(0)
 {
 
 }
 
+cmCPackWIXGenerator::~cmCPackWIXGenerator()
+{
+  if(this->Patch)
+    {
+    delete this->Patch;
+    }
+}
+
 int cmCPackWIXGenerator::InitializeInternal()
 {
   componentPackageMethod = ONE_PACKAGE;
+  this->Patch = new cmWIXPatch(this->Logger);
 
   return this->Superclass::InitializeInternal();
 }
@@ -232,7 +241,7 @@ bool cmCPackWIXGenerator::InitializeWiXConfiguration()
   const char* patchFilePath = GetOption("CPACK_WIX_PATCH_FILE");
   if(patchFilePath)
     {
-    this->Patch.LoadFragments(patchFilePath);
+    this->Patch->LoadFragments(patchFilePath);
     }
 
   return true;
@@ -525,7 +534,7 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
     return false;
     }
 
-  return this->Patch.CheckForUnappliedFragments();
+  return this->Patch->CheckForUnappliedFragments();
 }
 
 std::string cmCPackWIXGenerator::GetProgramFilesFolderId() const
@@ -857,13 +866,13 @@ void cmCPackWIXGenerator::AddDirectoryAndFileDefinitons(
         desktopExecutables,
         shortcutMap);
 
-      this->Patch.ApplyFragment(subDirectoryId, directoryDefinitions);
+      this->Patch->ApplyFragment(subDirectoryId, directoryDefinitions);
       directoryDefinitions.EndElement("Directory");
       }
     else
       {
       std::string componentId = fileDefinitions.EmitComponentFile(
-        directoryId, id, fullPath, this->Patch);
+        directoryId, id, fullPath, *(this->Patch));
 
       featureDefinitions.EmitComponentRef(componentId);
 

+ 2 - 1
Source/CPack/WiX/cmCPackWIXGenerator.h

@@ -35,6 +35,7 @@ public:
   cmCPackTypeMacro(cmCPackWIXGenerator, cmCPackGenerator);
 
   cmCPackWIXGenerator();
+  ~cmCPackWIXGenerator();
 
 protected:
   virtual int InitializeInternal();
@@ -166,7 +167,7 @@ private:
 
   std::string CPackTopLevel;
 
-  cmWIXPatch Patch;
+  cmWIXPatch* Patch;
 };
 
 #endif