From 9458373cd0cd62ad929b062e4d69eddf3eee236b Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 4 Apr 2022 08:44:17 -0700 Subject: [PATCH] QObjectPrivate: use placement new/delete for SignalVector Just to be pedantically correct, but also makes the construction code slightly more readable. Change-Id: I29f1c141c0f7436393d9fffd16e2bbf0f361c024 Reviewed-by: Marc Mutz (cherry picked from commit d1e9cab81ca94f450b1391822091ed81fec60c92) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/kernel/qobject_p.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h index c3805107dc9..5c530ed6227 100644 --- a/src/corelib/kernel/qobject_p.h +++ b/src/corelib/kernel/qobject_p.h @@ -276,8 +276,10 @@ public: if (c) deleteOrphaned(c); SignalVector *v = signalVector.loadRelaxed(); - if (v) + if (v) { + v->~SignalVector(); free(v); + } } // must be called on the senders connection data @@ -308,7 +310,9 @@ public: if (vector && vector->allocated > size) return; size = (size + 7) & ~7; - SignalVector *newVector = reinterpret_cast(malloc(sizeof(SignalVector) + (size + 1) * sizeof(ConnectionList))); + void *ptr = malloc(sizeof(SignalVector) + (size + 1) * sizeof(ConnectionList)); + auto newVector = new (ptr) SignalVector; + int start = -1; if (vector) { // not (yet) existing trait: