aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4jsonobject.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-25 13:34:23 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-28 13:33:27 +0200
commitabd82c68d564c97a4452a3afa2d63320e7292b30 (patch)
tree794e7b5b4549ac84aac63e6dae429283a36b1d79 /src/qml/jsruntime/qv4jsonobject.cpp
parentcf2a253f2f60c9f0c61682527d80143e72b355d4 (diff)
Make API of QV4::JsonObject GC clean
Change-Id: Ie7f2d63402c9486b30caf5866af8c747026c091d Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4jsonobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4jsonobject.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/qml/jsruntime/qv4jsonobject.cpp b/src/qml/jsruntime/qv4jsonobject.cpp
index 30313d2714..b6429278c2 100644
--- a/src/qml/jsruntime/qv4jsonobject.cpp
+++ b/src/qml/jsruntime/qv4jsonobject.cpp
@@ -966,20 +966,24 @@ ReturnedValue JsonObject::fromJsonValue(ExecutionEngine *engine, const QJsonValu
QJsonValue JsonObject::toJsonValue(const ValueRef value,
V4ObjectSet &visitedObjects)
{
- if (String *s = value->asString())
- return QJsonValue(s->toQString());
- else if (value->isNumber())
+ if (value->isNumber())
return QJsonValue(value->toNumber());
else if (value->isBoolean())
return QJsonValue((bool)value->booleanValue());
- else if (ArrayObject *a = value->asArrayObject())
- return toJsonArray(a, visitedObjects);
- else if (Object *o = value->asObject())
- return toJsonObject(o, visitedObjects);
else if (value->isNull())
return QJsonValue(QJsonValue::Null);
- else
+ else if (value->isUndefined())
return QJsonValue(QJsonValue::Undefined);
+
+ Q_ASSERT(value->engine());
+ Scope scope(value->engine());
+ ScopedArrayObject a(scope, value);
+ if (a)
+ return toJsonArray(a, visitedObjects);
+ ScopedObject o(scope, value);
+ if (o)
+ return toJsonObject(o, visitedObjects);
+ return QJsonValue(value->toQString());
}
QV4::ReturnedValue JsonObject::fromJsonObject(ExecutionEngine *engine, const QJsonObject &object)
@@ -995,7 +999,7 @@ QV4::ReturnedValue JsonObject::fromJsonObject(ExecutionEngine *engine, const QJs
return o.asReturnedValue();
}
-QJsonObject JsonObject::toJsonObject(QV4::Object *o, V4ObjectSet &visitedObjects)
+QJsonObject JsonObject::toJsonObject(ObjectRef o, V4ObjectSet &visitedObjects)
{
QJsonObject result;
if (!o || o->asFunctionObject())
@@ -1046,7 +1050,7 @@ QV4::ReturnedValue JsonObject::fromJsonArray(ExecutionEngine *engine, const QJso
return a.asReturnedValue();
}
-QJsonArray JsonObject::toJsonArray(ArrayObject *a, V4ObjectSet &visitedObjects)
+QJsonArray JsonObject::toJsonArray(ArrayObjectRef a, V4ObjectSet &visitedObjects)
{
QJsonArray result;
if (!a)