From kde-commits Thu Jul 01 13:27:46 2010 From: Gary Cramblitt Date: Thu, 01 Jul 2010 13:27:46 +0000 To: kde-commits Subject: [Konversation] 8977ebb: With USE_NICKINFO turned on, Message-Id: <20100701132746.92289BB56BA () projects ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=127800751802288 commit 8977ebb95473c39f8e679d34f77156fbf0398caa Author: Gary Cramblitt Date: Mon Aug 2 23:41:45 2004 +0000 With USE_NICKINFO turned on, fix crash when a watched nick goes offline. Invalidated iterator. svn path=/trunk/kdeextragear-2/konversation/; revision=335356 diff --git a/konversation/server.cpp b/konversation/server.cpp index 69ad647..e2321c2 100644 --- a/konversation/server.cpp +++ b/konversation/server.cpp @@ -705,18 +705,22 @@ void Server::notifyResponse(const QString& nicksOnline) } // Any watched nicks now offline? NickInfoMap::Iterator it; - NickInfoPtr nickInfo; - for( it = nicknamesOnline.begin() ; it != nicknamesOnline.end(); ++it ) + it = nicknamesOnline.begin(); + while (it != nicknamesOnline.end()) { - if (nickLowerList.find(it.key()) == nickLowerList.end()) + QString lcNickName = it.key(); + ++it; + if (nickLowerList.find(lcNickName) == nickLowerList.end()) { + NickInfoPtr nickInfo = getNickInfo(lcNickName); + QString nickName = nickInfo->getNickname(); nicksOnlineChanged = true; - addNickToOfflineList(nickInfo->getNickname(), watchLowerList); - getMainWindow()->appendToFrontmost(i18n("Notify"),i18n("%1 went offline. (%2)").arg(nickInfo->getNickname()).arg(getServerName()),statusView); + addNickToOfflineList(nickName, watchLowerList); + getMainWindow()->appendToFrontmost(i18n("Notify"),i18n("%1 went offline. (%2)").arg(nickName).arg(getServerName()),statusView); #ifdef USE_KNOTIFY KNotifyClient::event(mainWindow->winId(), "notify", - i18n("%1 went offline. (%2)").arg(nickInfo->getNickname()).arg(getServerName())); + i18n("%1 went offline. (%2)").arg(nickName).arg(getServerName())); #endif } }