aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-05-07 14:51:38 +0200
committerJoerg Bornemann <joerg.bornemann@digia.com>2014-05-08 14:23:54 +0200
commitd203f9b8203dedd08e3588af0c64e1d16e130bf8 (patch)
treea1cacf516492ac0a0539fd2cb92126c3f4249a35
parentdc247e1d622f027aa195cefc6de52d8e4cca8c13 (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.cpp4
-rw-r--r--tests/auto/blackbox/testdata/exportSimple/project.qbs4
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"
+ }
}
}