From bf8f62c32d6c66e38c167e6ca0ac59d29db52326 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 24 Aug 2014 16:39:04 -0400 Subject: Change Channel::GetModeList to return a copy of the mode list, not a pair of lower/upper bound iterators. Sometimes when iterating the list, like in cs_mode, we can modify the contents of it, which combined with mlock always agressively trying to readd modes to it can do bad things. --- modules/webcpanel/pages/chanserv/modes.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'modules/webcpanel') diff --git a/modules/webcpanel/pages/chanserv/modes.cpp b/modules/webcpanel/pages/chanserv/modes.cpp index d5b111708..e01239f58 100644 --- a/modules/webcpanel/pages/chanserv/modes.cpp +++ b/modules/webcpanel/pages/chanserv/modes.cpp @@ -94,9 +94,9 @@ bool WebCPanel::ChanServ::Modes::OnRequest(HTTPProvider *server, const Anope::st WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/mode", params, replacements); } - std::pair ml = c->GetModeList(cm->name); - for (; ml.first != ml.second; ++ml.first) - replacements["MASKS"] = HTTPUtils::Escape(ml.first->second); + std::vector v = c->GetModeList(cm->name); + for (unsigned int i = 0; i < v.size(); ++i) + replacements["MASKS"] = HTTPUtils::Escape(v[i]); } Page.Serve(server, page_name, client, message, reply, replacements); -- cgit