diff options
Diffstat (limited to 'node')
| -rw-r--r-- | node/mergenode.cpp | 15 |
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; + } } } } |