diff options
Diffstat (limited to 'src/qml/compiler/qv4isel_p.cpp')
-rw-r--r-- | src/qml/compiler/qv4isel_p.cpp | 13 |
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; |