diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-05-07 14:51:38 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-05-08 14:23:54 +0200 |
commit | d203f9b8203dedd08e3588af0c64e1d16e130bf8 (patch) | |
tree | a1cacf516492ac0a0539fd2cb92126c3f4249a35 | |
parent | dc247e1d622f027aa195cefc6de52d8e4cca8c13 (diff) |
fix crash on Properties block in Export itemv1.2.1
The merged Export item was lacking a file context.
Added a QBS_CHECK in instantiateModule to ensure a valid file context
of the module instance scope.
Task-number: QBS-550
Change-Id: I04368ba2e290a9af70f22e9c4c07324e295da4f0
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r-- | src/lib/corelib/language/moduleloader.cpp | 4 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/exportSimple/project.qbs | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp index e6c911d6e..ba11840ad 100644 --- a/src/lib/corelib/language/moduleloader.cpp +++ b/src/lib/corelib/language/moduleloader.cpp @@ -443,12 +443,15 @@ void ModuleLoader::mergeExportItems(ModuleLoader::ProductContext *productContext { Item *merged = Item::create(productContext->item->pool()); merged->setTypeName(QLatin1String("Export")); + merged->setFile(productContext->item->file()); + merged->setLocation(productContext->item->location()); QSet<Item *> exportItems; foreach (Item *exportItem, productContext->exportItems) { checkCancelation(); if (Q_UNLIKELY(productContext->filesWithExportItem.contains(exportItem->file()))) throw ErrorInfo(Tr::tr("Multiple Export items in one product are prohibited."), exportItem->location()); + merged->setFile(exportItem->file()); merged->setLocation(exportItem->location()); productContext->filesWithExportItem += exportItem->file(); exportItems.insert(exportItem); @@ -861,6 +864,7 @@ void ModuleLoader::instantiateModule(ProductContext *productContext, Item *insta // create module scope Item *moduleScope = Item::create(m_pool); + QBS_CHECK(instanceScope->file()); moduleScope->setFile(instanceScope->file()); moduleScope->setScope(instanceScope); copyProperty(QLatin1String("project"), productContext->project->scope, moduleScope); diff --git a/tests/auto/blackbox/testdata/exportSimple/project.qbs b/tests/auto/blackbox/testdata/exportSimple/project.qbs index 1b665b880..96244671a 100644 --- a/tests/auto/blackbox/testdata/exportSimple/project.qbs +++ b/tests/auto/blackbox/testdata/exportSimple/project.qbs @@ -19,6 +19,10 @@ Project { } Export { Depends { name: 'dummy2' } + Properties { // QBS-550 + condition: false + qbs.optimization: "ludicrous speed" + } } } |