diff options
Diffstat (limited to 'lib/TaskMan.cc')
-rw-r--r-- | lib/TaskMan.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/TaskMan.cc b/lib/TaskMan.cc index 5b29d1c..c688f8a 100644 --- a/lib/TaskMan.cc +++ b/lib/TaskMan.cc @@ -115,6 +115,16 @@ void TaskMan::RemoveFromWatches(Task * t) { p--; } } + + for (TaskList_t::iterator p = TaskList.begin(); p && (p != TaskList.end()); p++) { + if ((*p)->WaitedBy() == t) { + Zombies.push_back(*p); + (*p)->RemoveFromWatches(); + TaskList.erase(p); + number--; + p--; + } + } } void TaskMan::WaitFor(Handle * h, Task * t, int flags) { @@ -328,7 +338,7 @@ void TaskMan::MainLoop() throw (GeneralException) { if (o->GetState() == TASK_DONE) { TaskList_t::iterator f = FindTask(o); if (!f) { - throw GeneralException(_("TaskMan: internal error (task not found)")); + throw GeneralException(_("TaskMan: internal error (task not found) -- SHOULD NOT HAPPEN!!")); } TaskList.erase(f); number--; |