summaryrefslogtreecommitdiffstats
path: root/Source/CPack
diff options
context:
space:
mode:
authorAlexander Wittig <abgandar@gmail.com>2017-12-01 11:14:43 (GMT)
committerBrad King <brad.king@kitware.com>2017-12-01 15:52:55 (GMT)
commitf25d87db9e406eda77aa62f583e1ceeb7b145381 (patch)
tree3ce39dae5edf04050afbc06a908a43677854bb29 /Source/CPack
parent7746fdb2fe0177341aadeafec2ae73aa08ddfaf6 (diff)
downloadCMake-f25d87db9e406eda77aa62f583e1ceeb7b145381.zip
CMake-f25d87db9e406eda77aa62f583e1ceeb7b145381.tar.gz
CMake-f25d87db9e406eda77aa62f583e1ceeb7b145381.tar.bz2
CPack: Fix macOS PKG component dependency information
Refactoring in commit v3.7.0-rc1~523^2 (CPack/PackageMaker: port to cmXMLWriter, 2016-06-08) accidentally broke `distribution.dist` generation when there are dependencies between components and the pkg (or the derived productbuild) generator are used. The resulting package cannot be installed and instead the Apple Installer app shows a "Javascript error" message. The problem is that a `std::ostringstream` is constructed with some content, but the stream pointer still points to the beginning of the stream, so subsequent writes overwrite the initial content instead of appending.
Diffstat (limited to 'Source/CPack')
-rw-r--r--Source/CPack/cmCPackPKGGenerator.cxx2
1 files changed, 1 insertions, 1 deletions
diff --git a/Source/CPack/cmCPackPKGGenerator.cxx b/Source/CPack/cmCPackPKGGenerator.cxx
index 4f5b2a0..9ea8540 100644
--- a/Source/CPack/cmCPackPKGGenerator.cxx
+++ b/Source/CPack/cmCPackPKGGenerator.cxx
@@ -189,7 +189,7 @@ void cmCPackPKGGenerator::CreateChoice(const cmCPackComponent& component,
// This way, selecting C will automatically select everything it depends
// on (B and A), while selecting something that depends on C--either D
// or E--will automatically cause C to get selected.
- std::ostringstream selected("my.choice.selected");
+ std::ostringstream selected("my.choice.selected", std::ios_base::ate);
std::set<const cmCPackComponent*> visited;
AddDependencyAttributes(component, visited, selected);
visited.clear();