From 44b5602536a95b847404b28948ad2bb4a4076f4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Brooke?= Date: Sat, 17 May 2025 13:05:52 +0200 Subject: [PATCH] QMetaType: use sized delete to deallocate a value When destroying a value created by QMetaType::create(), pass the size to operator delete. This allows allocators to potentially optimize the deallocation. The size passed is always the one used during allocation, iface->size. As a drive-by, make the operator() function const. Change-Id: I3224af525671d98327d21033d059f52620fbb837 Reviewed-by: Thiago Macieira --- src/corelib/kernel/qmetatype.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index d9aee79d688..335baa680bb 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -74,12 +74,12 @@ namespace { struct QMetaTypeDeleter { const QtPrivate::QMetaTypeInterface *iface; - void operator()(void *data) + void operator()(void *data) const { if (iface->alignment > __STDCPP_DEFAULT_NEW_ALIGNMENT__) { - operator delete(data, std::align_val_t(iface->alignment)); + operator delete(data, iface->size, std::align_val_t(iface->alignment)); } else { - operator delete(data); + operator delete(data, iface->size); } } };