summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qvariant.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/kernel/qvariant.cpp')
-rw-r--r--src/corelib/kernel/qvariant.cpp12
1 files 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<const void *>(&variant.d.data));
- d.is_null = variant.d.is_null;
+ QMetaType t = d.type();
+ if (t.isValid())
+ t.construct(&d, variant.constData());
}
return *this;