From 2ebb2016f7ff7d4a86f13e1350c9d4b03b3a47eb Mon Sep 17 00:00:00 2001 From: Renaud G Date: Fri, 27 Jan 2017 23:08:33 +0100 Subject: -Fix issue with Math priority : 5-5*5+5 is working now. --- diceparser.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/diceparser.cpp b/diceparser.cpp index f2e3104..dc18903 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -753,11 +753,27 @@ bool DiceParser::readOperator(QString& str,ExecutionNode* previous) delete node; return false; } - if(node->getPriority()>=nodeExec->getPriority()) + ExecutionNode* nodeExecOrChild = nodeExec; + ExecutionNode* parent = NULL; + + while((nullptr!=nodeExecOrChild) && (node->getPriority()getPriority())) { - node->setNextNode(nodeExec->getNextNode()); - nodeExec->setNextNode(NULL); + parent = nodeExecOrChild; + nodeExecOrChild = nodeExecOrChild->getNextNode(); } + + if((nullptr != nodeExecOrChild)&&(nodeExec != nodeExecOrChild)) + { + node->setNextNode(nodeExecOrChild); + parent->setNextNode(NULL); + } + else + { + node->setNextNode(nodeExecOrChild->getNextNode()); + nodeExecOrChild->setNextNode(NULL); + } + + previous->setNextNode(node); return true; -- cgit v1.2.3-70-g09d2