From f18e8cebfcb9053bec3221f88a3944a781114530 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 4 Mar 2025 14:59:48 +0100 Subject: [PATCH] QMovableArrayOps::Inserter cleanup [3/3]: cut out the `where` middle-man It turned out that we've been maintaining both displaceFrom and its copy, `where`, in parallel. This is not needed, so only maintain displaceFrom. Pick-to: 6.9 6.8 6.5 Change-Id: I8c13420ae3fd284e362c4dd1f1b06d2847780c86 Reviewed-by: Ahmad Samir --- src/corelib/tools/qarraydataops.h | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/corelib/tools/qarraydataops.h b/src/corelib/tools/qarraydataops.h index 40859134043..c20abd12c23 100644 --- a/src/corelib/tools/qarraydataops.h +++ b/src/corelib/tools/qarraydataops.h @@ -640,8 +640,8 @@ public: const qsizetype nInserts = 0; const size_t bytes; - void verifyPost(T *where) - { Q_ASSERT(where == displaceTo); } + void verifyPost() + { Q_ASSERT(displaceFrom == displaceTo); } explicit Inserter(QArrayDataPointer *d, qsizetype pos, qsizetype n) : data{d}, @@ -666,35 +666,28 @@ public: void insertRange(const T *source, qsizetype n) { - T *where = displaceFrom; - while (n--) { - new (where) T(*source); - ++where; + new (displaceFrom) T(*source); ++source; ++displaceFrom; } - verifyPost(where); + verifyPost(); } void insertFill(const T &t, qsizetype n) { - T *where = displaceFrom; - while (n--) { - new (where) T(t); - ++where; + new (displaceFrom) T(t); ++displaceFrom; } - verifyPost(where); + verifyPost(); } void insertOne(T &&t) { - T *where = displaceFrom; - new (where) T(std::move(t)); + new (displaceFrom) T(std::move(t)); ++displaceFrom; - verifyPost(++where); + verifyPost(); } };