QObjectPrivate: use placement new/delete for SignalVector

Just to be pedantically correct, but also makes the construction code
slightly more readable.

Pick-to: 6.2 6.3
Change-Id: I29f1c141c0f7436393d9fffd16e2bbf0f361c024
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
bb10
Thiago Macieira 2022-04-04 08:44:17 -07:00
parent bc6087fce2
commit d1e9cab81c
1 changed files with 6 additions and 2 deletions

View File

@ -284,8 +284,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
@ -316,7 +318,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: