X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsignalproxy.cpp;h=f4fe0fb3ef01e7f23b6f91896f22a968376556c0;hp=8d9d8b36c00c5f1a9c9c5d889fddd0d77f5268b6;hb=9a7ec1bc5c61aeb53bf124231d10852797b98970;hpb=e95dffeaa5d005caa689f8fe34678b95f8fc6736 diff --git a/src/common/signalproxy.cpp b/src/common/signalproxy.cpp index 8d9d8b36..f4fe0fb3 100644 --- a/src/common/signalproxy.cpp +++ b/src/common/signalproxy.cpp @@ -290,8 +290,11 @@ void SignalProxy::objectRenamed(QString oldname, QString newname) { } void SignalProxy::objectRenamed(QByteArray classname, QString oldname, QString newname) { - if(_syncSlave.contains(classname) && _syncSlave[classname].contains(oldname) && oldname != newname) - _syncSlave[classname][newname] = _syncSlave[classname].take(oldname); + if(_syncSlave.contains(classname) && _syncSlave[classname].contains(oldname) && oldname != newname) { + SyncableObject *obj = _syncSlave[classname][newname] = _syncSlave[classname].take(oldname); + if(!obj->isInitialized()) + requestInit(obj); + } } @@ -317,7 +320,7 @@ void SignalProxy::removePeer(QIODevice* iodev) { qWarning() << "SignalProxy: unknown QIODevice" << iodev; return; } - + // take a last gasp while(true) { QVariant var; @@ -593,6 +596,11 @@ void SignalProxy::dispatchSignal(const RequestType &requestType, const QVariantL void SignalProxy::receivePeerSignal(QIODevice *sender, const QVariant &packedFunc) { QVariantList params(packedFunc.toList()); + if(params.isEmpty()) { + qWarning() << "SignalProxy::receivePeerSignal(): received incompatible Data:" << packedFunc; + return; + } + int callType = params.takeFirst().value(); switch(callType) {