diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-19 09:10:42 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-22 01:06:20 +0200 |
commit | 332b870bd8f0fba6f09e539376a674d7a4413631 (patch) | |
tree | a3977c20b6331e1e6ab1d85e5e25836155797d0c /src/qml/qml/qqmlvmemetaobject.cpp | |
parent | df5edd28bc4258b89d9d5ffdddf837f339a17aad (diff) |
Convert putIndexed()
Change-Id: I7d02b0fdf45079d0f7afcfb6d3158dd60cb09f33
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/qqmlvmemetaobject.cpp')
-rw-r--r-- | src/qml/qml/qqmlvmemetaobject.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/qml/qml/qqmlvmemetaobject.cpp b/src/qml/qml/qqmlvmemetaobject.cpp index e3a6621ab4..d70df5175b 100644 --- a/src/qml/qml/qqmlvmemetaobject.cpp +++ b/src/qml/qml/qqmlvmemetaobject.cpp @@ -73,9 +73,13 @@ void QQmlVMEVariantQObjectPtr::objectDestroyed(QObject *) if (m_target && m_index >= 0) { if (m_isVar && m_target->varPropertiesInitialized && !m_target->varProperties.isUndefined()) { // Set the var property to NULL - QV4::ArrayObject *a = m_target->varProperties.value().asArrayObject(); - if (a) - a->putIndexed(m_index - m_target->firstVarPropertyIndex, QV4::Value::nullValue()); + QV4::ExecutionEngine *v4 = m_target->varProperties.engine(); + if (v4) { + QV4::Scope scope(v4); + QV4::ScopedArrayObject a(scope, m_target->varProperties.value().asArrayObject()); + if (a) + a->putIndexed(m_index - m_target->firstVarPropertyIndex, QV4::ScopedValue(scope, QV4::Value::nullValue())); + } } m_target->activate(m_target->object, m_target->methodOffset() + m_index, 0); @@ -1029,7 +1033,9 @@ void QQmlVMEMetaObject::writeVarProperty(int id, const QV4::Value &value) QObject *valueObject = 0; QQmlVMEVariantQObjectPtr *guard = getQObjectGuardForProperty(id); - if (QV4::Object *o = value.asObject()) { + QV4::ScopedValue v(scope, value); + QV4::ScopedObject o(scope, v); + if (o) { // And, if the new value is a scarce resource, we need to ensure that it does not get // automatically released by the engine until no other references to it exist. if (QV4::VariantObject *v = o->as<QV4::VariantObject>()) { @@ -1051,7 +1057,7 @@ void QQmlVMEMetaObject::writeVarProperty(int id, const QV4::Value &value) } // Write the value and emit change signal as appropriate. - varProperties.value().asObject()->putIndexed(id - firstVarPropertyIndex, value); + varProperties.value().asObject()->putIndexed(id - firstVarPropertyIndex, v); activate(object, methodOffset() + id, 0); } |