fixed bug which may make sems crash when removing timers

git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@823 8eb893ce-cfd4-0310-b710-fb5ebe64c474
sayer/1.4-spce2.6
Stefan Sayer 19 years ago
parent 18d97431a5
commit 2cfe6788ce

@ -152,11 +152,15 @@ void UserTimer::unsafe_removeTimer(int id, const string& session_id)
void UserTimer::removeTimers(const string& session_id) {
// DBG("removing timers for <%s>\n", session_id.c_str());
timers_mut.lock();
for (std::set<AmTimer>::iterator it = timers.begin();
it != timers.end(); it++) {
std::set<AmTimer>::iterator it = timers.begin();
while (it != timers.end()) {
if (it->session_id == session_id) {
timers.erase(it);
std::set<AmTimer>::iterator d_it = it;
it++;
timers.erase(d_it);
// DBG(" o timer removed.\n");
} else {
it++;
}
}
timers_mut.unlock();
@ -165,11 +169,15 @@ void UserTimer::removeTimers(const string& session_id) {
void UserTimer::removeUserTimers(const string& session_id) {
// DBG("removing User timers for <%s>\n", session_id.c_str());
timers_mut.lock();
for (std::set<AmTimer>::iterator it = timers.begin();
it != timers.end(); it++) {
std::set<AmTimer>::iterator it = timers.begin();
while (it != timers.end()) {
if ((it->id > 0)&&(it->session_id == session_id)) {
timers.erase(it);
std::set<AmTimer>::iterator d_it = it;
it++;
timers.erase(d_it);
// DBG(" o timer removed.\n");
} else {
it++;
}
}
timers_mut.unlock();

Loading…
Cancel
Save