diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2022-04-04 08:44:17 -0700 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-04-14 06:16:39 +0000 |
commit | 9a39bc6e8cd2c0310c72a2a4659414c4642f0d57 (patch) | |
tree | 0cc668aab811c9ac47f3ed3f25d38176eabce844 | |
parent | 47bf1a575651f98bc5860cf0feb79908c135354e (diff) |
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 <marc.mutz@qt.io>
(cherry picked from commit d1e9cab81ca94f450b1391822091ed81fec60c92)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/corelib/kernel/qobject_p.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h index 996d8d1d19..7592cefaf5 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<SignalVector *>(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: |