148 |
//execute temporary tasks |
//execute temporary tasks |
149 |
|
|
150 |
std::list<Task*>::iterator l_it; |
std::list<Task*>::iterator l_it; |
151 |
for (l_it = _temp_tasks.begin(); l_it != _temp_tasks.end(); ++l_it) |
for (l_it = _temp_tasks.begin(); l_it != _temp_tasks.end(); ) |
152 |
{ |
{ |
153 |
Task* tsk = (*l_it); |
Task* tsk = (*l_it); |
154 |
|
|
155 |
tsk->ExecuteTask(modem); |
tsk->ExecuteTask(modem); |
156 |
|
|
157 |
if ( tsk->IsFinished() ) |
if ( tsk->IsFinished() ) |
160 |
l_it = _temp_tasks.erase(l_it); |
l_it = _temp_tasks.erase(l_it); |
161 |
|
|
162 |
//now l_it points to the next element in the list, |
//now l_it points to the next element in the list, |
163 |
//but since the for() loop will increment it before next iteration we will decrease it here |
} else { |
164 |
--l_it; |
++l_it; //advance pointer as normal |
165 |
} |
} |
166 |
} |
} |
167 |
|
|
168 |
|
|