summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qmetatype.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/kernel/qmetatype.cpp')
-rw-r--r--src/corelib/kernel/qmetatype.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index 4991cb748a..446511c14d 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -1236,6 +1236,10 @@ static const struct : QMetaTypeModuleHelper
result = QCborValue(QCborValue::Null);
return true;
);
+ QMETATYPE_CONVERTER(Nullptr, QCborValue,
+ result = nullptr;
+ return source.isNull();
+ );
QMETATYPE_CONVERTER_ASSIGN(QCborValue, Bool);
QMETATYPE_CONVERTER_ASSIGN(QCborValue, Int);
QMETATYPE_CONVERTER_ASSIGN(QCborValue, UInt);
@@ -1423,7 +1427,12 @@ static const struct : QMetaTypeModuleHelper
QMETATYPE_CONVERTER(QJsonValue, Nullptr,
Q_UNUSED(source);
result = QJsonValue(QJsonValue::Null);
- return true;);
+ return true;
+ );
+ QMETATYPE_CONVERTER(Nullptr, QJsonValue,
+ result = nullptr;
+ return source.isNull();
+ );
QMETATYPE_CONVERTER(QJsonValue, Bool,
result = QJsonValue(source);
return true;);
@@ -1842,6 +1851,13 @@ bool QMetaType::convert(const void *from, int fromTypeId, void *to, int toTypeId
QMetaType toType(toTypeId);
if (toType.flags() & QMetaType::IsEnumeration)
return convertToEnum(from, fromTypeId, to, toType);
+ if (toTypeId == Nullptr) {
+ *static_cast<std::nullptr_t *>(to) = nullptr;
+ if (fromType.flags() & QMetaType::IsPointer) {
+ if (*static_cast<const void * const *>(from) == nullptr)
+ return true;
+ }
+ }
return false;
}