summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Griebl <robert.griebl@pelagicore.com>2015-01-08 15:33:34 (GMT)
committerRobert Griebl <robert.griebl@pelagicore.com>2015-01-08 15:47:10 (GMT)
commit6f55f3dbbb2cdae33a8b0d00b7bf2ada7fe79a04 (patch)
tree67f5fd2f54ecc3c3dd4fd25a377422ca279773ec
parent18c5ff04103eadcb532d03d526714385943295ab (diff)
downloadQt-6f55f3dbbb2cdae33a8b0d00b7bf2ada7fe79a04.zip
Qt-6f55f3dbbb2cdae33a8b0d00b7bf2ada7fe79a04.tar.gz
Qt-6f55f3dbbb2cdae33a8b0d00b7bf2ada7fe79a04.tar.bz2
Fix empty arrays in QML 1
Commit bb0239e added a regression, where empty arrays would produce errors in QML 1. Task-number: QTBUG-43656 Change-Id: I6d416b2387a1dfd3588c000368fc1223d08399bd Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp2
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp6
2 files changed, 8 insertions, 0 deletions
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index 52e5074..8885f40 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -2145,6 +2145,8 @@ QVariant QDeclarativeEnginePrivate::scriptValueToVariant(const QScriptValue &val
if (val.isArray()) {
int length = val.property(QLatin1String("length")).toInt32();
+ if (!length)
+ containsQObjects = true;
for (int ii = 0; ii < length; ++ii) {
if (val.property(ii).isQObject()) {
containsQObjects = true;
diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
index ac548b1..2ad3c66 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
+++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
@@ -457,6 +457,12 @@ void tst_qdeclarativeecmascript::arrayExpressions()
QCOMPARE(list2.at(1), QVariant(2));
QCOMPARE(list2.at(2), QVariant(QString("foo")));
QCOMPARE(list2.at(3), QVariant(QString("bar")));
+
+ MyExpression expr3(&context, "[]");
+ result = expr3.evaluate();
+ QCOMPARE(result.userType(), qMetaTypeId<QList<QObject *> >());
+ QList<QObject *> list3 = qvariant_cast<QList<QObject *> >(result);
+ QCOMPARE(list3.count(), 0);
}
// Tests that modifying a context property will reevaluate expressions