diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2023-05-31 11:05:40 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2023-05-31 16:37:21 +0200 |
commit | 4e860a66d6e21e93e78d8d3b6b08da09a4870db5 (patch) | |
tree | efb78dd6332cdacc163fe99602f1e36e98ee00c4 /src | |
parent | 3a7ddd7274d93012a57fbe2e47185d921b7a66d1 (diff) |
QVariant: Extract Method PrivateShared::computeAllocationSize()
Will be re-used in the upcoming emplace() function.
Task-number: QTBUG-112187
Change-Id: Ie2b4570b7ba6c9d0ce938203933758a0d0d59f5a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/kernel/qvariant.h | 1 | ||||
-rw-r--r-- | src/corelib/kernel/qvariant_p.h | 8 |
2 files changed, 8 insertions, 1 deletions
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)); |