diff options
| author | Lars Knoll <lars.knoll@digia.com> | 2013-09-25 13:34:23 +0200 |
|---|---|---|
| committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-28 13:33:27 +0200 |
| commit | abd82c68d564c97a4452a3afa2d63320e7292b30 (patch) | |
| tree | 794e7b5b4549ac84aac63e6dae429283a36b1d79 /src/qml/jsruntime/qv4jsonobject.cpp | |
| parent | cf2a253f2f60c9f0c61682527d80143e72b355d4 (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.cpp | 24 |
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) |
