aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlvaluetypewrapper.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@theqtcompany.com>2014-12-12 12:35:52 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2014-12-20 12:00:33 +0100
commit965fac4418bec7e7b3c84efd76f7803116fb9eac (patch)
treecb9991dcba0f80bd0ee15ef58bffe39c40918250 /src/qml/qml/qqmlvaluetypewrapper.cpp
parent2fe06148f237d7a12a3c034cdfc3a6b923ea1df6 (diff)
Store a heap object in the qmlextensions
Change-Id: I5ad9236378ff1e037945d024ee5bd6629dddec4d Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/qqmlvaluetypewrapper.cpp')
-rw-r--r--src/qml/qml/qqmlvaluetypewrapper.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/qml/qml/qqmlvaluetypewrapper.cpp b/src/qml/qml/qqmlvaluetypewrapper.cpp
index a98bad636a..ede55d033f 100644
--- a/src/qml/qml/qqmlvaluetypewrapper.cpp
+++ b/src/qml/qml/qqmlvaluetypewrapper.cpp
@@ -144,7 +144,7 @@ void QmlValueTypeWrapper::initProto(ExecutionEngine *v4)
Scope scope(v4);
Scoped<Object> o(scope, v4->newObject());
o->defineDefaultProperty(v4->id_toString, method_toString, 1);
- v4->qmlExtensions()->valueTypeWrapperPrototype = o;
+ v4->qmlExtensions()->valueTypeWrapperPrototype = o->d();
}
ReturnedValue QmlValueTypeWrapper::create(QV8Engine *v8, QObject *object, int property, QQmlValueType *type)
@@ -154,7 +154,8 @@ ReturnedValue QmlValueTypeWrapper::create(QV8Engine *v8, QObject *object, int pr
initProto(v4);
Scoped<QmlValueTypeReference> r(scope, v4->memoryManager->alloc<QmlValueTypeReference>(v8));
- r->setPrototype(v4->qmlExtensions()->valueTypeWrapperPrototype->asObject());
+ ScopedObject proto(scope, v4->qmlExtensions()->valueTypeWrapperPrototype);
+ r->setPrototype(proto);
r->d()->type = type; r->d()->object = object; r->d()->property = property;
return r->asReturnedValue();
}
@@ -166,7 +167,8 @@ ReturnedValue QmlValueTypeWrapper::create(QV8Engine *v8, const QVariant &value,
initProto(v4);
Scoped<QmlValueTypeCopy> r(scope, v4->memoryManager->alloc<QmlValueTypeCopy>(v8));
- r->setPrototype(v4->qmlExtensions()->valueTypeWrapperPrototype->asObject());
+ ScopedObject proto(scope, v4->qmlExtensions()->valueTypeWrapperPrototype);
+ r->setPrototype(proto);
r->d()->type = type; r->d()->value = value;
return r->asReturnedValue();
}