diff options
Diffstat (limited to 'src/qml/jsruntime/qv4arraydata.cpp')
| -rw-r--r-- | src/qml/jsruntime/qv4arraydata.cpp | 9 |
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; } |
