summaryrefslogtreecommitdiff
path: root/lib/TaskMan.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/TaskMan.cc')
-rw-r--r--lib/TaskMan.cc12
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--;