summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2023-05-31 11:05:40 +0200
committerMarc Mutz <marc.mutz@qt.io>2023-05-31 16:37:21 +0200
commit4e860a66d6e21e93e78d8d3b6b08da09a4870db5 (patch)
treeefb78dd6332cdacc163fe99602f1e36e98ee00c4 /src
parent3a7ddd7274d93012a57fbe2e47185d921b7a66d1 (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.h1
-rw-r--r--src/corelib/kernel/qvariant_p.h8
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));