From 4355c6e9835e08e42d8d082ada4470293faef2ca Mon Sep 17 00:00:00 2001 From: Pixel Date: Sat, 22 Dec 2001 02:06:30 +0000 Subject: TaskMan => a father kills his childrens. --- lib/TaskMan.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'lib/TaskMan.cc') 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--; -- cgit v1.2.3