summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2020-09-29 20:08:00 +0200
committerFabian Kosmale <fabian.kosmale@qt.io>2020-09-30 06:31:36 +0000
commit68923001279fd3da983dc59e57200e2080cadcb6 (patch)
treeb39af86fb12693b620c89235e6657a3098428a62 /src
parent8e2933f140d0969341b2b927f49a4c8606027fcf (diff)
QVariant: Change metatype in convert() even on failure
The documentation of convert promised that “If the cast cannot be done, the variant is still changed to the requested type”. This was not the case so far, because we returned too early if canConvert returned false. This commit changes the behavior of the method to reflect its documentation. The documented behavior seems more useful than the alternative of not changing the metaType, at least for common use cases inside qtdeclarative. Change-Id: I09b5a5efb7344e76e93de278e35c7fb2b2f87dcd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/kernel/qvariant.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index f28cd5a7a0..31c2173072 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -2032,10 +2032,10 @@ bool QVariant::convert(QMetaType targetType)
QVariant oldValue = *this;
clear();
+ create(targetType.id(), nullptr);
if (!oldValue.canConvert(targetType))
return false;
- create(targetType.id(), nullptr);
// Fail if the value is not initialized or was forced null by a previous failed convert.
if (oldValue.d.is_null && oldValue.d.typeId() != QMetaType::Nullptr)
return false;