aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickloader.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-24 13:53:54 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-26 09:05:22 +0200
commit0f204625dc6720d40df22ca352af995af5448525 (patch)
treeedb78721935e2b0d34927b3dc358c3b171dc43b1 /src/quick/items/qquickloader.cpp
parenta57085f00b146798a0cca0d52dfa127232c3e659 (diff)
Fix QQmlV4Function API to be GC safe
Change-Id: Id4f79c22fc48ada1c8a9a858e1b7b3d1cf14d120 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/quick/items/qquickloader.cpp')
-rw-r--r--src/quick/items/qquickloader.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/quick/items/qquickloader.cpp b/src/quick/items/qquickloader.cpp
index 63490ef2cc..1301225feb 100644
--- a/src/quick/items/qquickloader.cpp
+++ b/src/quick/items/qquickloader.cpp
@@ -568,7 +568,7 @@ void QQuickLoader::setSource(QQmlV4Function *args)
Q_D(QQuickLoader);
bool ipvError = false;
- args->setReturnValue(QV4::Value::undefinedValue());
+ args->setReturnValue(QV4::Encode::undefined());
QV4::Value ipv = d->extractInitialPropertyValues(args, this, &ipvError);
if (ipvError)
return;
@@ -578,7 +578,7 @@ void QQuickLoader::setSource(QQmlV4Function *args)
if (!ipv.isUndefined()) {
d->disposeInitialPropertyValues();
d->initialPropertyValues = ipv.asReturnedValue();
- d->qmlGlobalForIpv = args->qmlGlobal().asReturnedValue();
+ d->qmlGlobalForIpv = args->qmlGlobal();
}
setSource(sourceUrl, false); // already cleared and set ipv above.
@@ -926,7 +926,9 @@ void QQuickLoader::geometryChanged(const QRectF &newGeometry, const QRectF &oldG
QUrl QQuickLoaderPrivate::resolveSourceUrl(QQmlV4Function *args)
{
- QString arg = (*args)[0].toQStringNoThrow();
+ QV4::Scope scope(args->v4engine());
+ QV4::ScopedValue v(scope, (*args)[0]);
+ QString arg = v->toQString();
if (arg.isEmpty())
return QUrl();
@@ -937,10 +939,11 @@ QUrl QQuickLoaderPrivate::resolveSourceUrl(QQmlV4Function *args)
QV4::Value QQuickLoaderPrivate::extractInitialPropertyValues(QQmlV4Function *args, QObject *loader, bool *error)
{
- QV4::Value valuemap = QV4::Value::undefinedValue();
+ QV4::Scope scope(args->v4engine());
+ QV4::ScopedValue valuemap(scope, QV4::Value::undefinedValue());
if (args->length() >= 2) {
- QV4::Value v = (*args)[1];
- if (!v.isObject() || v.asArrayObject()) {
+ QV4::ScopedValue v(scope, (*args)[1]);
+ if (!v->isObject() || v->asArrayObject()) {
*error = true;
qmlInfo(loader) << QQuickLoader::tr("setSource: value is not an object");
} else {