]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/treeserver.cpp
Clean up duplicated link snomask messages on errors
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / treeserver.cpp
index 38d91f54cbf695f43b4e81716bde634d17c2c1bd..060c958d7ee04be40da73432cfb8061599af9f2e 100644 (file)
@@ -333,21 +333,17 @@ bool TreeServer::DelChild(TreeServer* Child)
  */
 bool TreeServer::Tidy()
 {
-       bool stillchildren = true;
-       while (stillchildren)
+       while (1)
        {
-               stillchildren = false;
-               for (std::vector<TreeServer*>::iterator a = Children.begin(); a != Children.end(); a++)
-               {
-                       TreeServer* s = (TreeServer*)*a;
-                       s->Tidy();
-                       Children.erase(a);
-                       delete s;
-                       stillchildren = true;
-                       break;
-               }
+               std::vector<TreeServer*>::iterator a = Children.begin();
+               if (a == Children.end())
+                       return true;
+               TreeServer* s = *a;
+               s->Tidy();
+               s->cull();
+               Children.erase(a);
+               delete s;
        }
-       return true;
 }
 
 CullResult TreeServer::cull()