X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fchannels.cpp;h=e06e4c6fcd3b085107ecad75aab6f9142f313eaf;hb=19eb420281670348532fdd58f5fe757d5413faf7;hp=fdf0f76e1abdbb4f20539b63749cda5546d3cfb6;hpb=47dda4f61512f6047f2b1dcccd1943aab74726e3;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/channels.cpp b/src/channels.cpp index fdf0f76e1..e06e4c6fc 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -86,14 +86,13 @@ void Channel::CheckDestroy() if (res == MOD_RES_DENY) return; + // If the channel isn't in chanlist then it is already in the cull list, don't add it again chan_hash::iterator iter = ServerInstance->chanlist.find(this->name); - /* kill the record */ - if (iter != ServerInstance->chanlist.end()) - { - FOREACH_MOD(OnChannelDelete, (this)); - ServerInstance->chanlist.erase(iter); - } + if ((iter == ServerInstance->chanlist.end()) || (iter->second != this)) + return; + FOREACH_MOD(OnChannelDelete, (this)); + ServerInstance->chanlist.erase(iter); ClearInvites(); ServerInstance->GlobalCulls.AddItem(this); } @@ -599,7 +598,7 @@ void Channel::UserList(User* user, bool has_user) list.append(this->name).append(" :"); std::string::size_type pos = list.size(); - const size_t maxlen = ServerInstance->Config->Limits.MaxLine - 10 - ServerInstance->Config->ServerName.size(); + const size_t maxlen = ServerInstance->Config->Limits.MaxLine - 10 - ServerInstance->Config->ServerName.size() - user->nick.size(); std::string prefixlist; std::string nick; for (MemberMap::iterator i = userlist.begin(); i != userlist.end(); ++i)