1
0
mirror of https://github.com/anope/anope.git synced 2026-07-03 08:53:12 +02:00

Properly remove old callbacks from modules internal list of callbacks list, and cleaned up some of the timers code

git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2524 5417fbe8-f217-4b02-8779-1006273d7864
This commit is contained in:
Adam-
2009-10-02 22:19:19 +00:00
parent 85b409df85
commit dc4b9afebb
4 changed files with 47 additions and 24 deletions
+18 -11
View File
@@ -625,6 +625,19 @@ int destroyMessage(Message * m)
*/
void Module::AddCallBack(Timer *t)
{
/* Remove no longer valid Timers from the modules internal list */
std::list<Timer *>::iterator it, it2;
for (it = this->CallBacks.begin(); it != this->CallBacks.end(); it = it2)
{
it2 = it;
++it2;
if (!TimerManager::IsTimer(*it))
{
this->CallBacks.erase(it);
}
}
this->CallBacks.push_back(t);
}
@@ -634,19 +647,13 @@ void Module::AddCallBack(Timer *t)
*/
bool Module::DelCallBack(Timer *t)
{
std::list<Timer *>::iterator it;
Timer *t2;
std::list<Timer *>::iterator it = std::find(this->CallBacks.begin(), this->CallBacks.end(), t);
for (it = this->CallBacks.begin(); it != this->CallBacks.end(); ++it)
if (it != this->CallBacks.end())
{
t2 = *it;
if (t == t2)
{
TimerManager::DelTimer(t2);
this->CallBacks.erase(it);
return true;
}
TimerManager::DelTimer(*it);
this->CallBacks.erase(it);
return true;
}
return false;