From cb17157b2762ca5deebe16d4867346437acf3fe0 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Fri, 10 Jul 2020 13:21:07 +0200 Subject: [PATCH] Simplify the QVariant copy constructor and assignment operator Change-Id: Id517dfc220adf06c5852745c92cfbe5e9c2e94a3 Reviewed-by: Thiago Macieira --- src/corelib/kernel/qvariant.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index c28476af17..104a7263b4 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -1715,10 +1715,11 @@ QVariant::QVariant(const QVariant &p) { if (d.is_shared) { d.data.shared->ref.ref(); - } else if (d.type().isValid()) { - customConstruct(&d, p.constData()); - d.is_null = p.d.is_null; + return; } + QMetaType t = d.type(); + if (t.isValid()) + t.construct(&d, p.constData()); } #ifndef QT_NO_DATASTREAM @@ -2200,8 +2201,9 @@ QVariant& QVariant::operator=(const QVariant &variant) d = variant.d; } else { d = variant.d; - customConstruct(&d, reinterpret_cast(&variant.d.data)); - d.is_null = variant.d.is_null; + QMetaType t = d.type(); + if (t.isValid()) + t.construct(&d, variant.constData()); } return *this;