summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Gladitz <nilsgladitz@gmail.com>2014-04-18 20:45:30 (GMT)
committerNils Gladitz <nilsgladitz@gmail.com>2014-04-18 20:45:30 (GMT)
commitcb59f5da97723f648df78fd16d95697008d5d42b (patch)
tree10fdddeb54f77a683c96258dc6a30330162a4ec3
parent3970b5de0ff2023dd34d49c4dff2d8bd822ca596 (diff)
downloadCMake-cb59f5da97723f648df78fd16d95697008d5d42b.zip
CMake-cb59f5da97723f648df78fd16d95697008d5d42b.tar.gz
CMake-cb59f5da97723f648df78fd16d95697008d5d42b.tar.bz2
CPackWIX: Delay creation of cmWIXPatch until CPack has initialized Logger
Without the fix CPack will crash when the cmWIXPatch class tries to issue any diagnostics.
-rw-r--r--Source/CPack/WiX/cmCPackWIXGenerator.cxx19
-rw-r--r--Source/CPack/WiX/cmCPackWIXGenerator.h3
2 files changed, 16 insertions, 6 deletions
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index a385e40..ec59715 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/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);
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.h b/Source/CPack/WiX/cmCPackWIXGenerator.h
index 4c9f8c7..8705d40 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.h
+++ b/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