aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2023-08-29 18:51:12 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2023-09-01 08:03:43 +0000
commit2a3f824f2841415f5875082773e16ccc43fad22a (patch)
tree72db9e834af0317134b8a5d2c67daf8ae32ef1d2
parentaa398ecd5978dd060374d5a0a70f3b5e736aea62 (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.md1
-rw-r--r--src/lib/corelib/loader/moduleproviderloader.cpp1
-rw-r--r--tests/auto/blackbox/testdata-providers/module-providers/module-providers.qbs3
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"
}