aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4arraydata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/jsruntime/qv4arraydata.cpp')
-rw-r--r--src/qml/jsruntime/qv4arraydata.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4arraydata.cpp b/src/qml/jsruntime/qv4arraydata.cpp
index 724f6fbfa3..f691fe6beb 100644
--- a/src/qml/jsruntime/qv4arraydata.cpp
+++ b/src/qml/jsruntime/qv4arraydata.cpp
@@ -264,14 +264,19 @@ uint SimpleArrayData::truncate(Object *o, uint newLen)
return newLen;
if (!dd->attrs) {
+ for (uint i = newLen; i < dd->values.size; ++i)
+ dd->setData(dd->internalClass->engine, i, Value::emptyValue());
dd->values.size = newLen;
return newLen;
}
while (dd->values.size > newLen) {
- if (!dd->data(dd->values.size - 1).isEmpty() && !dd->attrs[dd->values.size - 1].isConfigurable())
+ const uint lastIndex = dd->values.size - 1;
+ if (!dd->data(lastIndex).isEmpty() && !dd->attrs[lastIndex].isConfigurable())
return dd->values.size;
- --dd->values.size;
+
+ dd->setData(dd->internalClass->engine, lastIndex, Value::emptyValue());
+ dd->values.size = lastIndex;
}
return dd->values.size;
}