diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h index fc4eb5bf9c6..efc58beebf5 100644 --- a/src/corelib/tools/qvarlengtharray.h +++ b/src/corelib/tools/qvarlengtharray.h @@ -869,11 +869,12 @@ Q_OUTOFLINE_TEMPLATE void QVLABase::reallocate_impl(qsizetype prealloc, void Q_ASSERT(data()); T *oldPtr = data(); qsizetype osize = size(); + const qsizetype oalloc = capacity(); const qsizetype copySize = qMin(asize, osize); Q_ASSERT(copySize >= 0); - if (aalloc != capacity()) { + if (aalloc != oalloc) { QVLABaseBase::malloced_ptr guard; void *newPtr; qsizetype newA; @@ -903,7 +904,7 @@ Q_OUTOFLINE_TEMPLATE void QVLABase::reallocate_impl(qsizetype prealloc, void } if (oldPtr != reinterpret_cast(array) && oldPtr != data()) - QtPrivate::sizedFree(oldPtr, osize, sizeof(T)); + QtPrivate::sizedFree(oldPtr, oalloc, sizeof(T)); } template