diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2014-04-09 13:32:39 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-04-09 16:49:05 +0200 |
commit | 7b3eb5373a0d3611c5a83379c5eb59505cc5c074 (patch) | |
tree | b2f9f5e7beb86b065ef206f5d45025975ef49905 /src/qml/qml/qqmlxmlhttprequest.cpp | |
parent | 60730cbb5e5475b5db6a15641211aa6958a93197 (diff) |
Fix unreliable behavior of array methods on qml list properties
Array methods such as forEach rely on the hasProperty boolean of getIndexed to
be set appropriately. Some getIndexed implementation - such as the
QQmlListProperty one - didn't initialize it correctly and therefore the
behavior was undefined.
Task-number: QTBUG-38088
Change-Id: I34bc3136d8cc2bc280397d0c4d5051e7d72269e8
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/qml/qqmlxmlhttprequest.cpp')
-rw-r--r-- | src/qml/qml/qqmlxmlhttprequest.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/qml/qml/qqmlxmlhttprequest.cpp b/src/qml/qml/qqmlxmlhttprequest.cpp index 184a9fe51f..d89dc92b68 100644 --- a/src/qml/qml/qqmlxmlhttprequest.cpp +++ b/src/qml/qml/qqmlxmlhttprequest.cpp @@ -905,8 +905,11 @@ ReturnedValue NamedNodeMap::getIndexed(Managed *m, uint index, bool *hasProperty { QV4::ExecutionEngine *v4 = m->engine(); NamedNodeMap *r = m->as<NamedNodeMap>(); - if (!r) + if (!r) { + if (hasProperty) + *hasProperty = false; return v4->currentContext()->throwTypeError(); + } QV8Engine *engine = v4->v8Engine; @@ -960,8 +963,11 @@ ReturnedValue NodeList::getIndexed(Managed *m, uint index, bool *hasProperty) { QV4::ExecutionEngine *v4 = m->engine(); NodeList *r = m->as<NodeList>(); - if (!r) + if (!r) { + if (hasProperty) + *hasProperty = false; return v4->currentContext()->throwTypeError(); + } QV8Engine *engine = v4->v8Engine; |