aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/moduleloader.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-05-18 14:16:43 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-05-18 13:23:19 +0000
commit6acefea159067b2bb512a964f52cf905042a5ad1 (patch)
tree48d64dcfd1a43680ac9344691fb3e325df9bb26b /src/lib/corelib/language/moduleloader.cpp
parent7e630a14369d30d7658ebda34ac6233ec1be1a2e (diff)
ModuleLoader: Remove modules of disabled product modules
... before setting up the transitive dependencies. Otherwise, there is the danger that other code will look at the original modules list and stumble over inconsistencies. For instance, propagateModulesFromParent() does that, which caused asserts on macOS. Change-Id: I8cd1adb15d8341e8f528f221dcca22fa27b0d68e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/lib/corelib/language/moduleloader.cpp')
-rw-r--r--src/lib/corelib/language/moduleloader.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index 85b037ee5..db6ddd7e9 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -1229,10 +1229,8 @@ void ModuleLoader::createSortedModuleList(const Item::Module &parentModule, Item
!= modules.cend()) {
return;
}
- if (!moduleRepresentsDisabledProduct(parentModule)) {
- for (const Item::Module &dep : parentModule.item->modules())
- createSortedModuleList(dep, modules);
- }
+ for (const Item::Module &dep : parentModule.item->modules())
+ createSortedModuleList(dep, modules);
modules.push_back(parentModule);
return;
}
@@ -3621,6 +3619,8 @@ void ModuleLoader::overrideItemProperties(Item *item, const QString &buildConfig
void ModuleLoader::collectAllModules(Item *item, std::vector<Item::Module> *modules)
{
for (const Item::Module &m : item->modules()) {
+ if (moduleRepresentsDisabledProduct(m))
+ m.item->removeModules();
auto it = std::find_if(modules->begin(), modules->end(),
[m] (const Item::Module &m2) { return m.name == m2.name; });
if (it != modules->end()) {
@@ -3631,8 +3631,6 @@ void ModuleLoader::collectAllModules(Item *item, std::vector<Item::Module> *modu
continue;
}
modules->push_back(m);
- if (moduleRepresentsDisabledProduct(m))
- continue;
collectAllModules(m.item, modules);
}
}