From 4e860a66d6e21e93e78d8d3b6b08da09a4870db5 Mon Sep 17 00:00:00 2001 From: Fabian Kosmale Date: Wed, 31 May 2023 11:05:40 +0200 Subject: [PATCH] QVariant: Extract Method PrivateShared::computeAllocationSize() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Will be re-used in the upcoming emplace() function. Task-number: QTBUG-112187 Change-Id: Ie2b4570b7ba6c9d0ce938203933758a0d0d59f5a Reviewed-by: Fabian Kosmale Reviewed-by: Marc Mutz Reviewed-by: MÃ¥rten Nordheim --- src/corelib/kernel/qvariant.h | 1 + src/corelib/kernel/qvariant_p.h | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 1fd304e772..d93df46275 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -78,6 +78,7 @@ public: private: inline PrivateShared() : ref(1) { } public: + static size_t computeAllocationSize(size_t size, size_t align); static PrivateShared *create(size_t size, size_t align); static void free(PrivateShared *p); diff --git a/src/corelib/kernel/qvariant_p.h b/src/corelib/kernel/qvariant_p.h index f5f4d0fb8a..8787f140f8 100644 --- a/src/corelib/kernel/qvariant_p.h +++ b/src/corelib/kernel/qvariant_p.h @@ -34,7 +34,7 @@ customConstructShared(size_t size, size_t align, F &&construct) return ptr.release(); } -inline QVariant::PrivateShared *QVariant::PrivateShared::create(size_t size, size_t align) +inline size_t QVariant::PrivateShared::computeAllocationSize(size_t size, size_t align) { size += sizeof(PrivateShared); if (align > sizeof(PrivateShared)) { @@ -44,6 +44,12 @@ inline QVariant::PrivateShared *QVariant::PrivateShared::create(size_t size, siz // alignment. size += align - sizeof(PrivateShared); } + return size; +} + +inline QVariant::PrivateShared *QVariant::PrivateShared::create(size_t size, size_t align) +{ + size = computeAllocationSize(size, align); void *data = operator new(size); auto *ps = new (data) QVariant::PrivateShared(); ps->offset = int(((quintptr(ps) + sizeof(PrivateShared) + align - 1) & ~(align - 1)) - quintptr(ps));