diff options
author | Lars Knoll <[email protected]> | 2013-09-11 21:48:23 +0200 |
---|---|---|
committer | The Qt Project <[email protected]> | 2013-09-18 13:13:36 +0200 |
commit | 6c9f1c8ed93374c16ca6ac540f39e98b451be0d8 (patch) | |
tree | 476d0046c6016a8cd62bfc29ed9697d98e98f738 /src/qml/jsruntime/qv4jsonobject.cpp | |
parent | bdb27b96acbd38531879378c48959a5a1cd60963 (diff) |
Use a ReturnedValue for Managed::getIndexed()
Change-Id: I0371ed21c4ef99564d3ffa1082dd109e890a78bf
Reviewed-by: Simon Hausmann <[email protected]>
Diffstat (limited to 'src/qml/jsruntime/qv4jsonobject.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4jsonobject.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4jsonobject.cpp b/src/qml/jsruntime/qv4jsonobject.cpp index ea8afcbaf9..c1cc5391b2 100644 --- a/src/qml/jsruntime/qv4jsonobject.cpp +++ b/src/qml/jsruntime/qv4jsonobject.cpp @@ -825,6 +825,8 @@ QString Stringify::JA(ArrayObject *a) if (stack.contains(a)) ctx->throwTypeError(); + Scope scope(a->engine()); + QString result; stack.push(a); QString stepback = indent; @@ -832,9 +834,10 @@ QString Stringify::JA(ArrayObject *a) QStringList partial; uint len = a->arrayLength(); + ScopedValue v(scope); for (uint i = 0; i < len; ++i) { bool exists; - Value v = a->getIndexed(i, &exists); + v = a->getIndexed(i, &exists); if (!exists) { partial += QStringLiteral("null"); continue; @@ -1028,6 +1031,8 @@ QJsonArray JsonObject::toJsonArray(ArrayObject *a, V4ObjectSet &visitedObjects) if (!a) return result; + Scope scope(a->engine()); + if (visitedObjects.contains(a)) { // Avoid recursion. // For compatibility with QVariant{List,Map} conversion, we return an @@ -1037,10 +1042,11 @@ QJsonArray JsonObject::toJsonArray(ArrayObject *a, V4ObjectSet &visitedObjects) visitedObjects.insert(a); + ScopedValue v(scope); quint32 length = a->arrayLength(); for (quint32 i = 0; i < length; ++i) { - Value v = a->getIndexed(i); - result.append(toJsonValue(v.asFunctionObject() ? QV4::Value::nullValue() : v, visitedObjects)); + v = a->getIndexed(i); + result.append(toJsonValue(v->asFunctionObject() ? QV4::Value::nullValue() : v, visitedObjects)); } visitedObjects.remove(a); |