aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4isel_p.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/compiler/qv4isel_p.cpp')
-rw-r--r--src/qml/compiler/qv4isel_p.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/qml/compiler/qv4isel_p.cpp b/src/qml/compiler/qv4isel_p.cpp
index 7ba43dd552..78eb9ba0f5 100644
--- a/src/qml/compiler/qv4isel_p.cpp
+++ b/src/qml/compiler/qv4isel_p.cpp
@@ -149,8 +149,17 @@ void IRDecoder::visitMove(V4IR::Move *s)
if (m->property) {
bool captureRequired = true;
if (_function && m->attachedPropertiesId == 0) {
- captureRequired = !_function->contextObjectDependencies.contains(m->property)
- && !_function->scopeObjectDependencies.contains(m->property);
+ if (_function->contextObjectDependencyCandidates.remove(m->property)) {
+ _function->contextObjectDependencies.insert(m->property);
+ captureRequired = false;
+ } else if (_function->scopeObjectDependencyCandidates.remove(m->property)) {
+ _function->scopeObjectDependencies.insert(m->property);
+ captureRequired = false;
+ }
+
+ if (captureRequired)
+ captureRequired = !_function->contextObjectDependencies.contains(m->property)
+ && !_function->scopeObjectDependencies.contains(m->property);
}
getQObjectProperty(m->base, m->property->coreIndex, captureRequired, m->attachedPropertiesId, t);
return;