diff --git a/src/factory/WFGraphTask.cc b/src/factory/WFGraphTask.cc index 84eeee51..1fec7324 100644 --- a/src/factory/WFGraphTask.cc +++ b/src/factory/WFGraphTask.cc @@ -30,14 +30,18 @@ SubTask *WFGraphNode::done() this->user_data = (void *)1; } else + delete this; + + return series->pop(); +} + +WFGraphNode::~WFGraphNode() +{ + if (this->user_data) { for (WFGraphNode *node : this->successors) node->WFCounterTask::count(); - - delete this; } - - return series->pop(); } WFGraphNode& WFGraphTask::create_graph_node(SubTask *task) diff --git a/src/factory/WFGraphTask.h b/src/factory/WFGraphTask.h index 25bfb389..920d355f 100644 --- a/src/factory/WFGraphTask.h +++ b/src/factory/WFGraphTask.h @@ -47,7 +47,7 @@ protected: protected: WFGraphNode() : WFCounterTask(0, nullptr) { } - virtual ~WFGraphNode() { } + virtual ~WFGraphNode(); friend class WFGraphTask; };