X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fu_listmode.h;h=6c6e2ca28fbc63374a5e9c096e824eb390983c48;hb=57542f8488ce9f3250915d6c2aa03c243e34b7b3;hp=a388d7f18207292c4a802d3c49d1e040735608ab;hpb=68730d4c9701b34c962302e6410908865fb2ba28;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/u_listmode.h b/include/u_listmode.h index a388d7f18..6c6e2ca28 100644 --- a/include/u_listmode.h +++ b/include/u_listmode.h @@ -168,7 +168,7 @@ class ListModeBase : public ModeHandler * See mode.h * @param channel The channel to remove all instances of the mode from */ - virtual void RemoveMode(Channel* channel) + virtual void RemoveMode(Channel* channel, irc::modestacker* stack) { modelist* el; channel->GetExt(infokey, el); @@ -181,9 +181,15 @@ class ListModeBase : public ModeHandler for (modelist::iterator it = el->begin(); it != el->end(); it++) { - modestack.Push(this->GetModeChar(), assign(it->mask)); + if (stack) + stack->Push(this->GetModeChar(), assign(it->mask)); + else + modestack.Push(this->GetModeChar(), assign(it->mask)); } + if (stack) + return; + while (modestack.GetStackedLine(stackresult)) { for (size_t j = 0; j < stackresult.size(); j++) @@ -198,7 +204,7 @@ class ListModeBase : public ModeHandler /** See mode.h */ - virtual void RemoveMode(User*) + virtual void RemoveMode(User*, irc::modestacker* stack) { /* Listmodes dont get set on users */ }