--- smsdaemon/TaskManager.cpp 2009/12/16 11:14:22 519 +++ 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 + } }