aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/range.cpp
diff options
context:
space:
mode:
authorrenaud guezennec <renaud@rolisteam.org>2019-07-29 20:35:52 +0000
committerrenaud guezennec <renaud@rolisteam.org>2019-07-29 20:35:52 +0000
commit1a902d383eef1e042d4462cd07b9384fcdf4d118 (patch)
tree766b8ab720fa5da11730d2fc2388f51b9d14de49 /range.cpp
parentf5906125576a8323a731c9456ce3dfc53b67ef59 (diff)
parent0d4b68221bda594cc695d216dfa21306ddb69c85 (diff)
downloadOneRoll-1a902d383eef1e042d4462cd07b9384fcdf4d118.tar.gz
OneRoll-1a902d383eef1e042d4462cd07b9384fcdf4d118.zip
Merge branch 'liberation' into 'master'
Add fuzzer on the DiceParser See merge request kde/rolisteam-diceparser!2
Diffstat (limited to 'range.cpp')
-rw-r--r--range.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/range.cpp b/range.cpp
index 471784c..8eeff4e 100644
--- a/range.cpp
+++ b/range.cpp
@@ -58,12 +58,20 @@ QString Range::toString()
{
return QStringLiteral("[%1-%2]").arg(m_start).arg(m_end);
}
-bool Range::isValidRangeSize(std::pair<qint64, qint64> range) const
+Dice::CONDITION_STATE Range::isValidRangeSize(const std::pair<qint64, qint64>& range) const
{
- auto newStart= qBound(range.first, m_start, range.second);
- auto newEnd= qBound(range.first, m_end, range.second);
+ auto minRange= std::min(m_start, m_end);
+ auto minPossibleValue= std::min(range.first, range.second);
- return (newStart == m_start && newEnd == m_end && m_end >= m_start);
+ auto maxRange= std::max(m_start, m_end);
+ auto maxPossibleValue= std::max(range.first, range.second);
+
+ if(minRange == minPossibleValue && maxRange == maxPossibleValue)
+ return Dice::CONDITION_STATE::ALWAYSTRUE;
+ else if(maxRange < minPossibleValue || minRange > maxPossibleValue)
+ return Dice::CONDITION_STATE::UNREACHABLE;
+ else
+ return Dice::CONDITION_STATE::UNREACHABLE;
}
void Range::setStart(qint64 start)
{