From e988ac11a2fb6f8db35f2e645e519678135c1587 Mon Sep 17 00:00:00 2001 From: danieldg Date: Fri, 17 Apr 2009 21:47:30 +0000 Subject: Fix CullList to not use O(n^2) version of vector clear git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11312 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/cull_list.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/cull_list.cpp b/src/cull_list.cpp index a1881fe3d..07649ed81 100644 --- a/src/cull_list.cpp +++ b/src/cull_list.cpp @@ -18,7 +18,6 @@ CullList::CullList(InspIRCd* Instance) : ServerInstance(Instance) { - list.clear(); } void CullList::AddItem(User* user) @@ -32,15 +31,11 @@ void CullList::MakeSilent(User* user) return; } -int CullList::Apply() +void CullList::Apply() { - int n = list.size(); - - while (list.size()) + for(std::vector::iterator a = list.begin(); a != list.end(); a++) { - std::vector::iterator a = list.begin(); - - User *u = (*a); + User *u = *a; // user has been moved onto their UID; that's why this isn't find(u->nick) user_hash::iterator iter = ServerInstance->Users->clientlist->find(u->uuid); @@ -113,9 +108,7 @@ int CullList::Apply() } delete u; - list.erase(list.begin()); } - - return n; + list.clear(); } -- cgit v1.2.3