From: Manuel Nickschas Date: Fri, 28 Mar 2014 22:26:53 +0000 (+0100) Subject: Properly handle RPC calls that return void X-Git-Tag: 0.11.0~46 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=59eccc3cb0f65357a93fbbab83a6287c56fa31fe 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. --- 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;