diff --git a/src/corelib/tools/qarraydataops.h b/src/corelib/tools/qarraydataops.h index f245c28c464..40859134043 100644 --- a/src/corelib/tools/qarraydataops.h +++ b/src/corelib/tools/qarraydataops.h @@ -634,11 +634,11 @@ public: struct Inserter { - QArrayDataPointer *data; + QArrayDataPointer * const data; T *displaceFrom; - T *displaceTo; - qsizetype nInserts = 0; - size_t bytes; + T * const displaceTo; + const qsizetype nInserts = 0; + const size_t bytes; void verifyPost(T *where) { Q_ASSERT(where == displaceTo); } @@ -653,13 +653,14 @@ public: ::memmove(static_cast(displaceTo), static_cast(displaceFrom), bytes); } ~Inserter() { + auto inserts = nInserts; if constexpr (!std::is_nothrow_copy_constructible_v) { if (displaceFrom != displaceTo) { ::memmove(static_cast(displaceFrom), static_cast(displaceTo), bytes); - nInserts -= qAbs(displaceFrom - displaceTo); + inserts -= qAbs(displaceFrom - displaceTo); } } - data->size += nInserts; + data->size += inserts; } Q_DISABLE_COPY(Inserter)