aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/node
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2018-04-09 10:24:20 +0200
committerRenaud G <renaud@rolisteam.org>2018-04-09 10:26:21 +0200
commit510b8da8874bdafa0bd72efbd9d0521ccc4d964d (patch)
treee6b4383a262796e8b67b8992ec21d15cf7a29acb /node
parent5037bbc102fec39fbdef810427c31cb0a1722709 (diff)
downloadOneRoll-510b8da8874bdafa0bd72efbd9d0521ccc4d964d.tar.gz
OneRoll-510b8da8874bdafa0bd72efbd9d0521ccc4d964d.zip
-Fix #4 crash with mishaped command.
And prevent this error to happen with other nodes.
Diffstat (limited to 'node')
-rw-r--r--node/executionnode.h11
-rw-r--r--node/filternode.cpp2
-rw-r--r--node/keepdiceexecnode.cpp2
-rw-r--r--node/rerolldicenode.cpp7
-rw-r--r--node/scalaroperatornode.cpp2
5 files changed, 17 insertions, 7 deletions
diff --git a/node/executionnode.h b/node/executionnode.h
index a84bef0..796831d 100644
--- a/node/executionnode.h
+++ b/node/executionnode.h
@@ -10,9 +10,14 @@
class ExecutionNode
{
public:
- enum DICE_ERROR_CODE {NO_DICE_ERROR,DIE_RESULT_EXPECTED,BAD_SYNTAXE,
- ENDLESS_LOOP_ERROR,DIVIDE_BY_ZERO,NOTHING_UNDERSTOOD,
- NO_DICE_TO_ROLL,TOO_MANY_DICE,NO_VARIBALE,
+ enum DICE_ERROR_CODE {NO_DICE_ERROR,
+ DIE_RESULT_EXPECTED,
+ BAD_SYNTAXE,
+ ENDLESS_LOOP_ERROR,
+ DIVIDE_BY_ZERO,
+ NOTHING_UNDERSTOOD,
+ NO_DICE_TO_ROLL,
+ TOO_MANY_DICE,NO_VARIBALE,
INVALID_INDEX};
/**
* @brief ExecutionNode
diff --git a/node/filternode.cpp b/node/filternode.cpp
index 462774b..b2a2db9 100644
--- a/node/filternode.cpp
+++ b/node/filternode.cpp
@@ -24,7 +24,7 @@ void FilterNode::run(ExecutionNode* previous)
{
return;
}
- DiceResult* previousDiceResult = static_cast<DiceResult*>(previous->getResult());
+ DiceResult* previousDiceResult = dynamic_cast<DiceResult*>(previous->getResult());
m_result->setPrevious(previousDiceResult);
if(nullptr!=previousDiceResult)
{
diff --git a/node/keepdiceexecnode.cpp b/node/keepdiceexecnode.cpp
index 547e343..89cda38 100644
--- a/node/keepdiceexecnode.cpp
+++ b/node/keepdiceexecnode.cpp
@@ -40,7 +40,7 @@ void KeepDiceExecNode::run(ExecutionNode* previous)
{
return;
}
- DiceResult* previousDiceResult = static_cast<DiceResult*>(previous->getResult());
+ DiceResult* previousDiceResult = dynamic_cast<DiceResult*>(previous->getResult());
m_result->setPrevious(previousDiceResult);
if(nullptr!=previousDiceResult)
{
diff --git a/node/rerolldicenode.cpp b/node/rerolldicenode.cpp
index c156dac..2ead761 100644
--- a/node/rerolldicenode.cpp
+++ b/node/rerolldicenode.cpp
@@ -19,7 +19,7 @@ void RerollDiceNode::run(ExecutionNode* previous)
m_previousNode = previous;
if((nullptr!=previous)&&(nullptr!=previous->getResult()))
{
- DiceResult* previous_result = static_cast<DiceResult*>(previous->getResult());
+ DiceResult* previous_result = dynamic_cast<DiceResult*>(previous->getResult());
m_result->setPrevious(previous_result);
if(nullptr!=previous_result)
{
@@ -47,6 +47,11 @@ void RerollDiceNode::run(ExecutionNode* previous)
m_nextNode->run(this);
}
}
+ else
+ {
+ m_errors.insert(ExecutionNode::DIE_RESULT_EXPECTED,
+ QObject::tr(" The a operator expects dice result. Please check the documentation and fix your command."));
+ }
}
}
void RerollDiceNode::setValidator(Validator* val)
diff --git a/node/scalaroperatornode.cpp b/node/scalaroperatornode.cpp
index a9a19e3..17ddecb 100644
--- a/node/scalaroperatornode.cpp
+++ b/node/scalaroperatornode.cpp
@@ -54,7 +54,7 @@ void ScalarOperatorNode::run(ExecutionNode* previous)
}
if(nullptr!=previous)
{
- DiceResult* previousResult = static_cast<DiceResult*>(previous->getResult());
+ DiceResult* previousResult = dynamic_cast<DiceResult*>(previous->getResult());
if(nullptr!=previousResult)
{