/** Removes child nodes of this node, and of that node, etc etc. * This is used during netsplits to automatically tidy up the * server tree. It is slow, we don't use it for much else. */ void TreeServer::Tidy() { while (1) { std::vector<TreeServer*>::iterator a = Children.begin(); if (a == Children.end()) return; TreeServer* s = *a; s->Tidy(); s->cull(); Children.erase(a); delete s; } }
/** Removes child nodes of this node, and of that node, etc etc. * This is used during netsplits to automatically tidy up the * server tree. It is slow, we don't use it for much else. */ bool TreeServer::Tidy() { bool stillchildren = true; while (stillchildren) { 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; } } return true; }