diff options
author | Simon Hausmann <[email protected]> | 2018-04-16 13:53:03 +0200 |
---|---|---|
committer | Aapo Keskimolo <[email protected]> | 2018-04-16 17:52:10 +0000 |
commit | 8e2cfa1d77dd4568a126f5ed5736dfef844a28ef (patch) | |
tree | 07c5c76c95bbca05d4afd3e52da130b635aa30c9 /src/qml/jsruntime/qv4jsonobject.cpp | |
parent | 539d724890aec3f00eadb39aeae973670e664ec6 (diff) |
Fix JSON.stringify with sequence types
Stringify::JA takes an ArrayObject* but it merely gets the length
property and does indexed get calls. Those work also on array-like
objects such as our sequence wrappers.
Task-number: QTBUG-45018
Change-Id: I4ec4f89a2e09c918fbc2ff1d48ae5915e67ce280
Reviewed-by: Lars Knoll <[email protected]>
Diffstat (limited to 'src/qml/jsruntime/qv4jsonobject.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4jsonobject.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/qml/jsruntime/qv4jsonobject.cpp b/src/qml/jsruntime/qv4jsonobject.cpp index 99666806be..c3569c29d2 100644 --- a/src/qml/jsruntime/qv4jsonobject.cpp +++ b/src/qml/jsruntime/qv4jsonobject.cpp @@ -637,7 +637,7 @@ struct Stringify Stringify(ExecutionEngine *e) : v4(e), replacerFunction(nullptr), propertyList(nullptr), propertyListSize(0) {} QString Str(const QString &key, const Value &v); - QString JA(ArrayObject *a); + QString JA(Object *a); QString JO(Object *o); QString makeMember(const QString &key, const Value &v); @@ -743,8 +743,8 @@ QString Stringify::Str(const QString &key, const Value &v) o = value->asReturnedValue(); if (o) { if (!o->as<FunctionObject>()) { - if (o->as<ArrayObject>()) { - return JA(static_cast<ArrayObject *>(o.getPointer())); + if (o->as<ArrayObject>() || o->isListType()) { + return JA(o.getPointer()); } else { return JO(o); } @@ -827,7 +827,7 @@ QString Stringify::JO(Object *o) return result; } -QString Stringify::JA(ArrayObject *a) +QString Stringify::JA(Object *a) { if (stackContains(a)) { v4->throwTypeError(); |