diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h index c0a92aaa10..f861c1e71c 100644 --- a/src/corelib/tools/qlist.h +++ b/src/corelib/tools/qlist.h @@ -126,6 +126,7 @@ class QList public: struct MemoryLayout : std::conditional< + // must stay isStatic until ### Qt 6 for BC reasons (don't use !isRelocatable)! QTypeInfo::isStatic || QTypeInfo::isLarge, QListData::IndirectLayout, typename std::conditional< diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h index bb5ae78d2b..25f5176c22 100644 --- a/src/corelib/tools/qvarlengtharray.h +++ b/src/corelib/tools/qvarlengtharray.h @@ -352,7 +352,7 @@ Q_OUTOFLINE_TEMPLATE void QVarLengthArray::realloc(int asize, int a a = Prealloc; } s = 0; - if (QTypeInfo::isStatic) { + if (!QTypeInfoQuery::isRelocatable) { QT_TRY { // copy all the old elements while (s < copySize) { @@ -445,7 +445,7 @@ Q_OUTOFLINE_TEMPLATE typename QVarLengthArray::iterator QVarLengthA if (n != 0) { resize(s + n); const T copy(t); - if (QTypeInfo::isStatic) { + if (!QTypeInfoQuery::isRelocatable) { T *b = ptr + offset; T *j = ptr + s; T *i = j - n; diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h index 5225b68d40..c69d27bbf9 100644 --- a/src/corelib/tools/qvector.h +++ b/src/corelib/tools/qvector.h @@ -553,7 +553,7 @@ void QVector::reallocData(const int asize, const int aalloc, QArrayData::Allo T *srcEnd = asize > d->size ? d->end() : d->begin() + asize; T *dst = x->begin(); - if (QTypeInfo::isStatic || (isShared && QTypeInfo::isComplex)) { + if (!QTypeInfoQuery::isRelocatable || (isShared && QTypeInfo::isComplex)) { // we can not move the data, we need to copy construct it while (srcBegin != srcEnd) { new (dst++) T(*srcBegin++); @@ -598,7 +598,7 @@ void QVector::reallocData(const int asize, const int aalloc, QArrayData::Allo } if (d != x) { if (!d->ref.deref()) { - if (QTypeInfo::isStatic || !aalloc || (isShared && QTypeInfo::isComplex)) { + if (!QTypeInfoQuery::isRelocatable || !aalloc || (isShared && QTypeInfo::isComplex)) { // data was copy constructed, we need to call destructors // or if !alloc we did nothing to the old 'd'. freeData(d); @@ -697,7 +697,7 @@ typename QVector::iterator QVector::insert(iterator before, size_type n, c const T copy(t); if (!isDetached() || d->size + n > int(d->alloc)) reallocData(d->size, d->size + n, QArrayData::Grow); - if (QTypeInfo::isStatic) { + if (!QTypeInfoQuery::isRelocatable) { T *b = d->end(); T *i = d->end() + n; while (i != b) @@ -746,7 +746,7 @@ typename QVector::iterator QVector::erase(iterator abegin, iterator aend) detach(); abegin = d->begin() + itemsUntouched; aend = abegin + itemsToErase; - if (QTypeInfo::isStatic) { + if (!QTypeInfoQuery::isRelocatable) { iterator moveBegin = abegin + itemsToErase; iterator moveEnd = d->end(); while (moveBegin != moveEnd) {