aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/jsruntime/qv4argumentsobject.cpp2
-rw-r--r--src/qml/qml/qqmlcontextwrapper.cpp3
-rw-r--r--src/qml/qml/qqmllistwrapper.cpp12
-rw-r--r--src/qml/qml/qqmlxmlhttprequest.cpp10
-rw-r--r--src/quick/items/context2d/qquickcontext2d.cpp5
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)