From 0e2f8f51ba2700386f23f0363f7b86b165efa3cb Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Sat, 19 Sep 2015 22:23:57 +0100 Subject: [PATCH] refs #450 CVariant has to work around the fact that QtDBus can't marshal an invalid QVariant. --- src/blackmisc/variant.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/blackmisc/variant.cpp b/src/blackmisc/variant.cpp index 813a295b4..a165b5e69 100644 --- a/src/blackmisc/variant.cpp +++ b/src/blackmisc/variant.cpp @@ -206,7 +206,14 @@ namespace BlackMisc void CVariant::marshallToDbus(QDBusArgument &arg) const { - arg << QString(typeName()) << QDBusVariant(getQVariant()); + if (isValid()) + { + arg << QString(typeName()) << QDBusVariant(getQVariant()); + } + else + { + arg << QString() << QDBusVariant(QVariant(0)); + } } void CVariant::unmarshallFromDbus(const QDBusArgument &arg) @@ -215,7 +222,14 @@ namespace BlackMisc QDBusVariant dbusVar; arg >> typeName >> dbusVar; - *this = fixQVariantFromDbusArgument(dbusVar.variant(), QMetaType::type(qPrintable(typeName))); + if (typeName.isEmpty()) + { + *this = CVariant(); + } + else + { + *this = fixQVariantFromDbusArgument(dbusVar.variant(), QMetaType::type(qPrintable(typeName))); + } } void CVariant::setPropertyByIndex(const CVariant &variant, const CPropertyIndex &index)