diff options
-rw-r--r-- | src/qml/jsruntime/qv4argumentsobject.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmlcontextwrapper.cpp | 3 | ||||
-rw-r--r-- | src/qml/qml/qqmllistwrapper.cpp | 12 | ||||
-rw-r--r-- | src/qml/qml/qqmlxmlhttprequest.cpp | 10 | ||||
-rw-r--r-- | src/quick/items/context2d/qquickcontext2d.cpp | 5 |
5 files changed, 27 insertions, 5 deletions
diff --git a/src/qml/jsruntime/qv4argumentsobject.cpp b/src/qml/jsruntime/qv4argumentsobject.cpp index 1c210b53b6..987b228209 100644 --- a/src/qml/jsruntime/qv4argumentsobject.cpp +++ b/src/qml/jsruntime/qv4argumentsobject.cpp @@ -160,6 +160,8 @@ ReturnedValue ArgumentsObject::getIndexed(Managed *m, uint index, bool *hasPrope *hasProperty = true; return args->context->callData->args[index].asReturnedValue(); } + if (hasProperty) + *hasProperty = false; return Encode::undefined(); } diff --git a/src/qml/qml/qqmlcontextwrapper.cpp b/src/qml/qml/qqmlcontextwrapper.cpp index 54bf986b8e..a5574b706a 100644 --- a/src/qml/qml/qqmlcontextwrapper.cpp +++ b/src/qml/qml/qqmlcontextwrapper.cpp @@ -461,6 +461,9 @@ ReturnedValue QQmlIdObjectsArray::getIndexed(Managed *m, uint index, bool *hasPr return Encode::undefined(); } + if (hasProperty) + *hasProperty = true; + ExecutionEngine *v4 = m->engine(); QQmlEnginePrivate *ep = v4->v8Engine->engine() ? QQmlEnginePrivate::get(v4->v8Engine->engine()) : 0; if (ep) diff --git a/src/qml/qml/qqmllistwrapper.cpp b/src/qml/qml/qqmllistwrapper.cpp index 0d60fee5d0..fd50e2dbbc 100644 --- a/src/qml/qml/qqmllistwrapper.cpp +++ b/src/qml/qml/qqmllistwrapper.cpp @@ -129,13 +129,21 @@ ReturnedValue QmlListWrapper::getIndexed(Managed *m, uint index, bool *hasProper QV4::ExecutionEngine *e = m->engine(); QmlListWrapper *w = m->as<QmlListWrapper>(); - if (!w) + if (!w) { + if (hasProperty) + *hasProperty = false; return e->currentContext()->throwTypeError(); + } quint32 count = w->property.count ? w->property.count(&w->property) : 0; - if (index < count && w->property.at) + if (index < count && w->property.at) { + if (hasProperty) + *hasProperty = true; return QV4::QObjectWrapper::wrap(e, w->property.at(&w->property, index)); + } + if (hasProperty) + *hasProperty = false; return Primitive::undefinedValue().asReturnedValue(); } 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; diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp index 567ed64c2f..2a6eae71f7 100644 --- a/src/quick/items/context2d/qquickcontext2d.cpp +++ b/src/quick/items/context2d/qquickcontext2d.cpp @@ -3175,8 +3175,11 @@ QV4::ReturnedValue QQuickJSContext2DPixelData::getIndexed(QV4::Managed *m, uint QV4::ExecutionEngine *v4 = m->engine(); QV4::Scope scope(v4); QV4::Scoped<QQuickJSContext2DPixelData> r(scope, m->as<QQuickJSContext2DPixelData>()); - if (!m) + if (!m) { + if (hasProperty) + *hasProperty = false; return m->engine()->currentContext()->throwTypeError(); + } if (r && index < static_cast<quint32>(r->image.width() * r->image.height() * 4)) { if (hasProperty) |