From 5f3d391c3dce4e47169499de156228e0cbfe933a Mon Sep 17 00:00:00 2001 From: Renaud G Date: Wed, 13 Dec 2017 00:44:24 +0100 Subject: -prevent endless loop in result parsing. --- node/mergenode.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 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; + } } } } -- cgit v1.2.3-70-g09d2