From 66f2423a1d5f1ce6ff3ad116181bbde0acaf7e41 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Thu, 6 Jul 2023 21:48:51 +0100 Subject: Make PartUser inline and add an overload that takes an iterator. The return value of PartUser is not used 99% of the time so this allows the compiler to optimise it out. --- src/channels.cpp | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) (limited to 'src/channels.cpp') diff --git a/src/channels.cpp b/src/channels.cpp index f302b691f..c94832327 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -304,17 +304,9 @@ bool Channel::CheckBan(User* user, const std::string& mask) InspIRCd::MatchCIDR(user->GetAddress(), suffix); } -/* Channel::PartUser - * Remove a channel from a users record, remove the reference to the Membership object - * from the channel and destroy it. - */ -bool Channel::PartUser(User* user, const std::string& reason) +void Channel::PartUser(const MemberMap::iterator& membiter, const std::string& reason) { - MemberMap::iterator membiter = userlist.find(user); - - if (membiter == userlist.end()) - return false; - + User* user = membiter->first; Membership* memb = membiter->second; std::string partreason(reason); CUList except_list; @@ -325,10 +317,9 @@ bool Channel::PartUser(User* user, const std::string& reason) // Remove this channel from the user's chanlist user->chans.erase(memb); + // Remove the Membership from this channel's userlist and destroy it this->DelUser(membiter); - - return true; } void Channel::KickUser(User* src, const MemberMap::iterator& victimiter, const std::string& reason) -- cgit v1.3.1-10-gc9f91