From 59eccc3cb0f65357a93fbbab83a6287c56fa31fe Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Fri, 28 Mar 2014 23:26:53 +0100 Subject: [PATCH] Properly handle RPC calls that return void Qt5 loudly warns when trying to construct a QVariant from QMetaType::Void, thus we should not do that. Instead, check for this case and use an invalid QVariant instead. Works fine on both Qt4 and Qt5 that way. --- src/common/signalproxy.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/common/signalproxy.cpp b/src/common/signalproxy.cpp index 68125ab6..e085cbba 100644 --- a/src/common/signalproxy.cpp +++ b/src/common/signalproxy.cpp @@ -547,7 +547,12 @@ void SignalProxy::handle(Peer *peer, const SyncMessage &syncMessage) return; } - QVariant returnValue((QVariant::Type)eMeta->returnType(slotId)); + // We can no longer construct a QVariant from QMetaType::Void + QVariant returnValue; + int returnType = eMeta->returnType(slotId); + if (returnType != QMetaType::Void) + returnValue = QVariant(static_cast(returnType)); + if (!invokeSlot(receiver, slotId, syncMessage.params, returnValue, peer)) { qWarning("SignalProxy::handleSync(): invokeMethod for \"%s\" failed ", eMeta->methodName(slotId).constData()); return; -- 2.20.1