aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/node
diff options
context:
space:
mode:
Diffstat (limited to 'node')
-rw-r--r--node/mergenode.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/node/mergenode.cpp b/node/mergenode.cpp
index 362a23a..e2d46cb 100644
--- a/node/mergenode.cpp
+++ b/node/mergenode.cpp
@@ -31,6 +31,7 @@ void MergeNode::run(ExecutionNode* previous)
m_previousNode = previous;
m_result->setPrevious(previous->getResult());
ExecutionNode* previousLast =nullptr;
+ std::vector<Result*> pastResult;
for(auto start : *m_startList)
{
ExecutionNode* last = getLatestNode(start);
@@ -62,7 +63,19 @@ void MergeNode::run(ExecutionNode* previous)
}
}
}
- tmpResult = tmpResult->getPrevious();
+ auto it = std::find_if(pastResult.begin(),pastResult.end(),[tmpResult](const Result* a){
+ return (a == tmpResult->getPrevious());
+ });
+ if(it == pastResult.end())
+ {
+ pastResult.push_back(previousLast->getResult());
+ tmpResult = tmpResult->getPrevious();
+ }
+ else
+ {
+ tmpResult->setPrevious(nullptr);
+ tmpResult = nullptr;
+ }
}
}
}