aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlvmemetaobject.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-19 09:10:42 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-22 01:06:20 +0200
commit332b870bd8f0fba6f09e539376a674d7a4413631 (patch)
treea3977c20b6331e1e6ab1d85e5e25836155797d0c /src/qml/qml/qqmlvmemetaobject.cpp
parentdf5edd28bc4258b89d9d5ffdddf837f339a17aad (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.cpp16
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);
}