--- smsdaemon/TaskManager.cpp 2008/12/21 18:41:08 208 +++ smsdaemon/TaskManager.cpp 2009/12/26 23:01:01 520 @@ -148,9 +148,10 @@ //execute temporary tasks std::list::iterator l_it; - for (l_it = _temp_tasks.begin(); l_it != _temp_tasks.end(); ++l_it) + for (l_it = _temp_tasks.begin(); l_it != _temp_tasks.end(); ) { Task* tsk = (*l_it); + tsk->ExecuteTask(modem); if ( tsk->IsFinished() ) @@ -159,9 +160,9 @@ l_it = _temp_tasks.erase(l_it); //now l_it points to the next element in the list, - //but since the for() loop will increment it before next iteration we will decrease it here - --l_it; - } + } else { + ++l_it; //advance pointer as normal + } } @@ -170,7 +171,12 @@ Task* TaskManager::GetPersistantTask(const std::string& taskname) { - return _persistant_tasks[ taskname ]; + std::map::iterator it; + it = _persistant_tasks.find(taskname); + if (it != _persistant_tasks.end()) + return it->second; + else + return 0; }