From d203f9b8203dedd08e3588af0c64e1d16e130bf8 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Wed, 7 May 2014 14:51:38 +0200 Subject: fix crash on Properties block in Export item 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 Reviewed-by: Christian Kandeler --- src/lib/corelib/language/moduleloader.cpp | 4 ++++ tests/auto/blackbox/testdata/exportSimple/project.qbs | 4 ++++ 2 files changed, 8 insertions(+) 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 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" + } } } -- cgit v1.2.3