From a2d7441b83f96d3ddf57e9bb8532e4e7d52418f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Tue, 2 Dec 2014 14:41:07 +0100 Subject: Fix QMetaProperty::write so it tries to register a property type. We can not assume that the property type is always registered, because QVariant argument may contain an instance of a different type. Change-Id: I4fc9593b826e13c401dbdacec4d60db36edc7102 Reviewed-by: Olivier Goffart --- src/corelib/kernel/qmetaobject.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index bf31ef9151..3e2fb46143 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -3027,9 +3027,11 @@ bool QMetaProperty::write(QObject *object, const QVariant &value) const else { typeName = rawStringData(mobj, typeInfo & TypeNameIndexMask); t = QMetaType::type(typeName); + if (t == QMetaType::UnknownType) + t = registerPropertyType(); + if (t == QMetaType::UnknownType) + return false; } - if (t == QMetaType::UnknownType) - return false; if (t != QMetaType::QVariant && t != (uint)value.userType() && (t < QMetaType::User && !v.convert((QVariant::Type)t))) return false; } -- cgit v1.2.3