From b32ef6a8fc508c41f8e48ea162d79f11eade05ab Mon Sep 17 00:00:00 2001 From: Renaud G Date: Sat, 28 Jan 2017 00:21:00 +0100 Subject: -Make copy of die instead of copy address, prevent crash while using the same diceparser several times. --- node/explosedicenode.cpp | 12 ++++++++++-- node/rerolldicenode.cpp | 15 +++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) (limited to 'node') diff --git a/node/explosedicenode.cpp b/node/explosedicenode.cpp index 33c15d2..51fc37e 100644 --- a/node/explosedicenode.cpp +++ b/node/explosedicenode.cpp @@ -14,7 +14,15 @@ void ExploseDiceNode::run(ExecutionNode* previous) m_result->setPrevious(previous_result); if(NULL!=previous_result) { - QList list = previous_result->getResultList(); + foreach(Die* die,previous_result->getResultList()) + { + Die* tmpdie = new Die(); + *tmpdie=*die; + m_diceResult->insertResult(tmpdie); + die->displayed(); + } + + QList list = m_diceResult->getResultList(); foreach(Die* die, list) @@ -24,7 +32,7 @@ void ExploseDiceNode::run(ExecutionNode* previous) die->roll(true); } } - m_diceResult->setResultList(list); + // m_diceResult->setResultList(list); if(NULL!=m_nextNode) { diff --git a/node/rerolldicenode.cpp b/node/rerolldicenode.cpp index 341b6d2..dcce4aa 100644 --- a/node/rerolldicenode.cpp +++ b/node/rerolldicenode.cpp @@ -2,9 +2,9 @@ RerollDiceNode::RerollDiceNode() - : m_myDiceResult(new DiceResult()),m_adding(false),m_validator(NULL) + : m_diceResult(new DiceResult()),m_adding(false),m_validator(NULL) { - m_result=m_myDiceResult; + m_result=m_diceResult; } RerollDiceNode::~RerollDiceNode() { @@ -23,8 +23,16 @@ void RerollDiceNode::run(ExecutionNode* previous) m_result->setPrevious(previous_result); if(NULL!=previous_result) { - QList list = previous_result->getResultList(); + foreach(Die* die,previous_result->getResultList()) + { + Die* tmpdie = new Die(); + *tmpdie=*die; + m_diceResult->insertResult(tmpdie); + die->displayed(); + } + //m_diceResult->setResultList(list); + QList list = m_diceResult->getResultList(); foreach(Die* die, list) { @@ -33,7 +41,6 @@ void RerollDiceNode::run(ExecutionNode* previous) die->roll(m_adding); } } - m_myDiceResult->setResultList(list); if(NULL!=m_nextNode) { -- cgit v1.2.3-70-g09d2