diff --git a/src/corelib/tools/qcontiguouscache.h b/src/corelib/tools/qcontiguouscache.h index 248a8e580e..469160bff2 100644 --- a/src/corelib/tools/qcontiguouscache.h +++ b/src/corelib/tools/qcontiguouscache.h @@ -387,10 +387,12 @@ void QContiguousCache::insert(int pos, const T &value) Q_ASSERT_X(pos >= 0 && pos < INT_MAX, "QContiguousCache::insert", "index out of range"); detach(); if (containsIndex(pos)) { - if(QTypeInfo::isComplex) + if (QTypeInfo::isComplex) { + (p->array + pos % d->alloc)->~T(); new (p->array + pos % d->alloc) T(value); - else + } else { p->array[pos % d->alloc] = value; + } } else if (pos == d->offset-1) prepend(value); else if (pos == d->offset+d->count)