X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fnetworkinfo.cpp;h=9db9f164555d0d8a582434d211e02a3dd80f2122;hp=114287aca32240b5228582f19ed1f37fd2d305a9;hb=988bcf1fc63b31947e3ce816c456c1b1a919d8ef;hpb=8a618fb4514d83a76cec8e7cd1319b935366a616 diff --git a/src/common/networkinfo.cpp b/src/common/networkinfo.cpp index 114287ac..9db9f164 100644 --- a/src/common/networkinfo.cpp +++ b/src/common/networkinfo.cpp @@ -299,6 +299,7 @@ IrcUser *NetworkInfo::updateNickFromMask(const QString &mask) { void NetworkInfo::ircUserNickChanged(QString newnick) { QString oldnick = _ircUsers.key(qobject_cast(sender())); + if(oldnick.isNull()) return; @@ -310,26 +311,18 @@ void NetworkInfo::ircUserNickChanged(QString newnick) { void NetworkInfo::ircUserDestroyed() { IrcUser *ircuser = qobject_cast(sender()); - QHash::iterator i = _ircUsers.begin(); - while(i != _ircUsers.end()) { - if(i.value() == ircuser) { - i = _ircUsers.erase(i); - } else { - i++; - } - } + // in case this assert triggers we probably need a static_cast + // dynamic_casts seem to screw things up when using the destroyed signal + Q_ASSERT(ircuser); + _ircUsers.remove(_ircUsers.key(ircuser); } void NetworkInfo::channelDestroyed() { IrcChannel *channel = qobject_cast(sender()); - QHash::iterator i = _ircChannels.begin(); - while(i != _ircChannels.end()) { - if(i.value() == channel) { - i = _ircChannels.erase(i); - } else { - i++; - } - } + // in case this assert triggers we probably need a static_cast + // dynamic_casts seem to screw things up when using the destroyed signal + Q_ASSERT(channel); + _ircChannels.remove(_ircChannels.key(channel)); } void NetworkInfo::setInitialized() {