diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2023-08-29 18:51:12 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2023-09-01 08:03:43 +0000 |
commit | 2a3f824f2841415f5875082773e16ccc43fad22a (patch) | |
tree | 72db9e834af0317134b8a5d2c67daf8ae32ef1d2 | |
parent | aa398ecd5978dd060374d5a0a70f3b5e736aea62 (diff) |
ModuleProviderLoader: Make sure pseudo module instances have a scope
Otherwise the Evaluator will erroneously add the instantiating item as a
scope.
Fixes: QBS-1747
Change-Id: If13a9b8174000d63f020b51677b855b9027d66f1
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
-rw-r--r-- | changelogs/changes-2.1.2.md | 1 | ||||
-rw-r--r-- | src/lib/corelib/loader/moduleproviderloader.cpp | 1 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-providers/module-providers/module-providers.qbs | 3 |
3 files changed, 4 insertions, 1 deletions
diff --git a/changelogs/changes-2.1.2.md b/changelogs/changes-2.1.2.md index f1887bfce..4d520aad0 100644 --- a/changelogs/changes-2.1.2.md +++ b/changelogs/changes-2.1.2.md @@ -1,5 +1,6 @@ # General * Fixed handling JS floating-point values for x86. +* Fixed scope pollution and potential crash when assigning to provider properties (QBS-1747). # Apple * Fixed bundle module with Xcode-less profiles. diff --git a/src/lib/corelib/loader/moduleproviderloader.cpp b/src/lib/corelib/loader/moduleproviderloader.cpp index 06123597a..d03a165f4 100644 --- a/src/lib/corelib/loader/moduleproviderloader.cpp +++ b/src/lib/corelib/loader/moduleproviderloader.cpp @@ -177,6 +177,7 @@ QVariantMap ModuleProviderLoader::getModuleProviderConfig(const ProductContext & continue; } case Value::JSSourceValueType: { + it.value()->setScope(item->scope(), {}); const ScopedJsValue sv(m_loaderState.evaluator().engine()->context(), m_loaderState.evaluator().value(item, it.key())); value = getJsVariant(m_loaderState.evaluator().engine()->context(), sv); diff --git a/tests/auto/blackbox/testdata-providers/module-providers/module-providers.qbs b/tests/auto/blackbox/testdata-providers/module-providers/module-providers.qbs index e83c80bb1..89bd1a11d 100644 --- a/tests/auto/blackbox/testdata-providers/module-providers/module-providers.qbs +++ b/tests/auto/blackbox/testdata-providers/module-providers/module-providers.qbs @@ -10,10 +10,11 @@ Project { readonly property string beginning: "beginning" CppApplication { name: "app1" + property string chooseLettersFrom: project.beginning // This indirection tests QBS-1747. Depends { name: "mygenerator.module1" } Depends { name: "mygenerator.module2" } Depends { name: "othergenerator" } - moduleProviders.mygenerator.chooseLettersFrom: project.beginning + moduleProviders.mygenerator.chooseLettersFrom: chooseLettersFrom moduleProviders.othergenerator.someDefines: name files: "main.cpp" } |