diff --git a/src/corelib/tools/qarraydataops.h b/src/corelib/tools/qarraydataops.h index 621ff915ad6..f245c28c464 100644 --- a/src/corelib/tools/qarraydataops.h +++ b/src/corelib/tools/qarraydataops.h @@ -638,14 +638,20 @@ public: T *displaceFrom; T *displaceTo; qsizetype nInserts = 0; - qsizetype bytes; + size_t bytes; void verifyPost(T *where) { Q_ASSERT(where == displaceTo); } explicit Inserter(QArrayDataPointer *d, qsizetype pos, qsizetype n) - : data(d) - { displace(pos, n); } + : data{d}, + displaceFrom{d->ptr + pos}, + displaceTo{displaceFrom + n}, + nInserts{n}, + bytes{(data->size - pos) * sizeof(T)} + { + ::memmove(static_cast(displaceTo), static_cast(displaceFrom), bytes); + } ~Inserter() { if constexpr (!std::is_nothrow_copy_constructible_v) { if (displaceFrom != displaceTo) { @@ -657,18 +663,6 @@ public: } Q_DISABLE_COPY(Inserter) - T *displace(qsizetype pos, qsizetype n) - { - nInserts = n; - T *insertionPoint = data->ptr + pos; - displaceFrom = data->ptr + pos; - displaceTo = displaceFrom + n; - bytes = data->size - pos; - bytes *= sizeof(T); - ::memmove(static_cast(displaceTo), static_cast(displaceFrom), bytes); - return insertionPoint; - } - void insertRange(const T *source, qsizetype n) { T *where = displaceFrom;