Skip to content

Commit 6f55f3d

Browse files
author
Robert Griebl
committed
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 <[email protected]>
1 parent 18c5ff0 commit 6f55f3d

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

src/declarative/qml/qdeclarativeengine.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2145,6 +2145,8 @@ QVariant QDeclarativeEnginePrivate::scriptValueToVariant(const QScriptValue &val
21452145

21462146
if (val.isArray()) {
21472147
int length = val.property(QLatin1String("length")).toInt32();
2148+
if (!length)
2149+
containsQObjects = true;
21482150
for (int ii = 0; ii < length; ++ii) {
21492151
if (val.property(ii).isQObject()) {
21502152
containsQObjects = true;

tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,12 @@ void tst_qdeclarativeecmascript::arrayExpressions()
457457
QCOMPARE(list2.at(1), QVariant(2));
458458
QCOMPARE(list2.at(2), QVariant(QString("foo")));
459459
QCOMPARE(list2.at(3), QVariant(QString("bar")));
460+
461+
MyExpression expr3(&context, "[]");
462+
result = expr3.evaluate();
463+
QCOMPARE(result.userType(), qMetaTypeId<QList<QObject *> >());
464+
QList<QObject *> list3 = qvariant_cast<QList<QObject *> >(result);
465+
QCOMPARE(list3.count(), 0);
460466
}
461467

462468
// Tests that modifying a context property will reevaluate expressions

0 commit comments

Comments
 (0)