aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2014-03-14 16:00:36 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-15 17:33:48 +0100
commit156508dbc058e8d43106afb19d1dee50f5d65b93 (patch)
tree30056c2779d660456755949f8edf1664efa66607
parentaf41170bc5e4c1be194bb9bbe883b00c2f7062b7 (diff)
Fix crash when calling concat on an empty array
Make sure to create the array data. The earlier called copyArrayData() doesn't have to do that. Task-number: QTBUG-37506 Change-Id: I6671769fcd471234c4c2eaa1614aa61266db0e5c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
-rw-r--r--src/qml/jsruntime/qv4arraydata.cpp2
-rw-r--r--tests/auto/qml/qjsengine/tst_qjsengine.cpp1
2 files changed, 3 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4arraydata.cpp b/src/qml/jsruntime/qv4arraydata.cpp
index 9156a94e09..13a7bb281b 100644
--- a/src/qml/jsruntime/qv4arraydata.cpp
+++ b/src/qml/jsruntime/qv4arraydata.cpp
@@ -580,6 +580,8 @@ uint ArrayData::append(Object *obj, const ArrayObject *otherObj, uint n)
if (other->isSparse())
obj->initSparseArray();
+ else
+ obj->arrayCreate();
uint oldSize = obj->getLength();
diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
index 53e86268a6..263dd0f963 100644
--- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp
+++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
@@ -1011,6 +1011,7 @@ void tst_QJSEngine::evaluate_data()
QTest::newRow("/a/g") << QString("/a/g") << -1 << false << -1;
QTest::newRow("/a/gim") << QString("/a/gim") << -1 << false << -1;
QTest::newRow("/a/gimp") << QString("/a/gimp") << 1 << true << 1;
+ QTest::newRow("empty-array-concat") << QString("var a = []; var b = [1]; var c = a.concat(b); ") << 1 << false << -1;
}
void tst_QJSEngine::evaluate()