diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp index 77f41106017..95a1f9f52c2 100644 --- a/src/corelib/text/qbytearray.cpp +++ b/src/corelib/text/qbytearray.cpp @@ -1673,7 +1673,7 @@ void QByteArray::reallocData(uint alloc, Data::ArrayOptions options) dd.data()[dd.size] = 0; d = dd; } else { - d.reallocate(alloc, options); + d->reallocate(alloc, options); } } diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp index 5bd063ee42d..d327264218e 100644 --- a/src/corelib/text/qstring.cpp +++ b/src/corelib/text/qstring.cpp @@ -2367,7 +2367,7 @@ void QString::reallocData(uint alloc, bool grow) dd.data()[dd.size] = 0; d = dd; } else { - d.reallocate(alloc, allocOptions); + d->reallocate(alloc, allocOptions); } } diff --git a/src/corelib/tools/qarraydataops.h b/src/corelib/tools/qarraydataops.h index 1d74f499938..33ad13c6b7f 100644 --- a/src/corelib/tools/qarraydataops.h +++ b/src/corelib/tools/qarraydataops.h @@ -62,6 +62,9 @@ template struct QPodArrayOps : public QArrayDataPointer { +private: + typedef QTypedArrayData Data; +public: typedef typename QArrayDataPointer::parameter_type parameter_type; void appendInitialize(size_t newSize) @@ -228,6 +231,13 @@ struct QPodArrayOps } return true; } + + void reallocate(qsizetype alloc, typename Data::ArrayOptions options) + { + auto pair = Data::reallocateUnaligned(this->d, this->ptr, alloc, options); + this->d = pair.first; + this->ptr = pair.second; + } }; QT_WARNING_POP diff --git a/src/corelib/tools/qarraydatapointer.h b/src/corelib/tools/qarraydatapointer.h index a17cf4a1010..9bdbea2bde1 100644 --- a/src/corelib/tools/qarraydatapointer.h +++ b/src/corelib/tools/qarraydatapointer.h @@ -199,12 +199,6 @@ public: typename Data::ArrayOptions detachFlags() const noexcept { return d->detachFlags(); } typename Data::ArrayOptions cloneFlags() const noexcept { return d->cloneFlags(); } - void reallocate(uint alloc, typename Data::ArrayOptions options) - { - auto pair = Data::reallocateUnaligned(d, ptr, alloc, options); - d = pair.first; - ptr = pair.second; - } Data *d_ptr() { return d; } private: