diff options
Diffstat (limited to 'src/qml/compiler/qv4isel_p.cpp')
-rw-r--r-- | src/qml/compiler/qv4isel_p.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/qml/compiler/qv4isel_p.cpp b/src/qml/compiler/qv4isel_p.cpp index 3f9e666c98..45b1e9f3b0 100644 --- a/src/qml/compiler/qv4isel_p.cpp +++ b/src/qml/compiler/qv4isel_p.cpp @@ -151,7 +151,12 @@ void IRDecoder::visitMove(V4IR::Move *s) return; } } else if (m->type == V4IR::Member::MemberOfQObject) { - getQObjectProperty(m->base, m->property->coreIndex, t); + bool captureRequired = true; + if (_function) { + captureRequired = !_function->contextObjectDependencies.contains(m->property) + && !_function->scopeObjectDependencies.contains(m->property); + } + getQObjectProperty(m->base, m->property->coreIndex, captureRequired, t); return; } else if (m->base->asTemp() || m->base->asConst()) { getProperty(m->base, *m->name, t); |