aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlvaluetypewrapper.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-18 16:36:02 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-22 01:06:20 +0200
commitdf5edd28bc4258b89d9d5ffdddf837f339a17aad (patch)
tree2a5939d5e3c49928aadf43337832d3ef5a58df08 /src/qml/qml/qqmlvaluetypewrapper.cpp
parent700ba1bcb39e082049c96fafdfaccfe5d83cd77e (diff)
convert Managed::put() API to be GC safe
Change-Id: I09198ce372fa545372db389fac26828d21ad5731 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/qqmlvaluetypewrapper.cpp')
-rw-r--r--src/qml/qml/qqmlvaluetypewrapper.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/qml/qml/qqmlvaluetypewrapper.cpp b/src/qml/qml/qqmlvaluetypewrapper.cpp
index ca6fa1f277..e38bc191dd 100644
--- a/src/qml/qml/qqmlvaluetypewrapper.cpp
+++ b/src/qml/qml/qqmlvaluetypewrapper.cpp
@@ -326,7 +326,7 @@ ReturnedValue QmlValueTypeWrapper::get(Managed *m, const StringRef name, bool *h
#undef VALUE_TYPE_ACCESSOR
}
-void QmlValueTypeWrapper::put(Managed *m, String *name, const Value &value)
+void QmlValueTypeWrapper::put(Managed *m, const StringRef name, const ValueRef value)
{
ExecutionEngine *v4 = m->engine();
Scope scope(v4);
@@ -350,7 +350,7 @@ void QmlValueTypeWrapper::put(Managed *m, String *name, const Value &value)
QQmlBinding *newBinding = 0;
- QV4::FunctionObject *f = value.asFunctionObject();
+ QV4::ScopedFunctionObject f(scope, value);
if (f) {
if (!f->bindingKeyFlag) {
// assigning a JS function to a non-var-property is not allowed.
@@ -372,7 +372,7 @@ void QmlValueTypeWrapper::put(Managed *m, String *name, const Value &value)
QV4::ExecutionEngine::StackFrame frame = v4->currentStackFrame();
- newBinding = new QQmlBinding(value, reference->object, context,
+ newBinding = new QQmlBinding(*value, reference->object, context,
frame.source, qmlSourceCoordinate(frame.line), qmlSourceCoordinate(frame.column));
newBinding->setTarget(reference->object, cacheData, context);
newBinding->setEvaluateFlags(newBinding->evaluateFlags() |
@@ -385,7 +385,7 @@ void QmlValueTypeWrapper::put(Managed *m, String *name, const Value &value)
oldBinding->destroy();
if (!f) {
- QVariant v = r->v8->toVariant(value, -1);
+ QVariant v = r->v8->toVariant(*value, -1);
if (p.isEnumType() && (QMetaType::Type)v.type() == QMetaType::Double)
v = v.toInt();
@@ -409,7 +409,7 @@ void QmlValueTypeWrapper::put(Managed *m, String *name, const Value &value)
if (index == -1)
return;
- QVariant v = r->v8->toVariant(value, -1);
+ QVariant v = r->v8->toVariant(*value, -1);
r->type->setValue(copy->value);
QMetaProperty p = r->type->metaObject()->property(index);