diff --git a/src/qml/jsruntime/qv4arraydata.cpp b/src/qml/jsruntime/qv4arraydata.cpp
index 3235a116ee54cf6017e0eef68e9615b46a0e4abf..12254c6384ac18374df93e6250c621d5c2945548 100644
--- a/src/qml/jsruntime/qv4arraydata.cpp
+++ b/src/qml/jsruntime/qv4arraydata.cpp
@@ -104,6 +104,8 @@ void ArrayData::realloc(Object *o, Type newType, uint requested, bool enforceAtt
 
         if (requested <= d->alloc() && newType == d->type() && hasAttrs == enforceAttributes)
             return;
+        if (alloc < d->alloc())
+            alloc = d->alloc();
 
         if (d->type() < Sparse) {
             offset = static_cast<SimpleArrayData *>(d)->d()->offset;