QMetaType::create: don't leak memory if copy can't be made
QMetaType::construct will return nullptr if a copy is requested but if there is no copy constructor. In that case, the memory allocated in QMetaType::create will be leaked. This case is covered in the unit tests in template<> void testCreateHelper<QMetaType::Void>() so we can't assert in construct that a copy constructor is present if a copy is requested. Fixes static analyzer warning 618b1e6877f737df57c39fd35ad91cd4. Pick-to: 6.1 Change-Id: Ic439b36b1f120b9d0f888efaeab2801d8acc13de Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>bb10
parent
0eca1f4a46
commit
90b51219dd
|
|
@ -574,7 +574,7 @@ int QMetaType::idHelper() const
|
|||
*/
|
||||
void *QMetaType::create(const void *copy) const
|
||||
{
|
||||
if (d_ptr) {
|
||||
if (d_ptr && (copy ? !!d_ptr->copyCtr : !!d_ptr->defaultCtr)) {
|
||||
void *where =
|
||||
#ifdef __STDCPP_DEFAULT_NEW_ALIGNMENT__
|
||||
d_ptr->alignment > __STDCPP_DEFAULT_NEW_ALIGNMENT__ ?
|
||||
|
|
|
|||
Loading…
Reference in New Issue