aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/projectresolver.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-08-29 18:02:10 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-08-31 07:51:11 +0000
commit89689cac88ffe880942c7acb59fc3374a34cbd6c (patch)
tree800feec2c017aaf8760426498720950b71b28100 /src/lib/corelib/language/projectresolver.cpp
parentd8c000b6c01787205bd11a475a7b9b0e168451b0 (diff)
Store product names in ExportedModule
... rather than product pointers. ExportedModule objects can be stored in Transformers, which potentially outlive the referenced products. Alternatively, we could update the product pointers during change tracking, but that would be tedious and error-prone. [ChangeLog] Fixed possible crash on storing a build graph after re- resolving. Change-Id: I09bcf638a17da410198524858eb4c1bda59bebcb Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/lib/corelib/language/projectresolver.cpp')
-rw-r--r--src/lib/corelib/language/projectresolver.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index 348858f2b..97015dae4 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -911,19 +911,18 @@ void ProjectResolver::collectExportedProductDependencies()
if (!contains(directDepNames, dep.product->name))
continue;
- if (!contains(exportingProduct->exportedModule.productDependencies, dep.product))
- exportingProduct->exportedModule.productDependencies.push_back(dep.product);
+ if (!contains(exportingProduct->exportedModule.productDependencies,
+ dep.product->uniqueName())) {
+ exportingProduct->exportedModule.productDependencies.push_back(
+ dep.product->uniqueName());
+ }
if (!dep.parameters.isEmpty()) {
exportingProduct->exportedModule.dependencyParameters.insert(dep.product,
dep.parameters);
}
}
auto &productDeps = exportingProduct->exportedModule.productDependencies;
- static const auto cmpFunc = [](const ResolvedProductConstPtr &p1,
- const ResolvedProductConstPtr &p2) {
- return p1->uniqueName() < p2->uniqueName();
- };
- std::sort(productDeps.begin(), productDeps.end(), cmpFunc);
+ std::sort(productDeps.begin(), productDeps.end());
}
}