aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/libparser/node/executionnode.cpp
diff options
context:
space:
mode:
authorRenaud Guezennec <renaud@rolisteam.org>2024-12-28 15:00:29 +0100
committerRenaud Guezennec <renaud@rolisteam.org>2024-12-29 14:46:30 +0100
commit5c508b351a95f416e4a599f76902b888369de1b4 (patch)
treee3f6363fd7458fb0a46eabde6bd3a65b4746d798 /src/libparser/node/executionnode.cpp
parent5515cd5a22ab97843f6ca1c234333ec110a9bab1 (diff)
downloadOneRoll-5c508b351a95f416e4a599f76902b888369de1b4.tar.gz
OneRoll-5c508b351a95f416e4a599f76902b888369de1b4.zip
Several fix from fuzzer test.
Diffstat (limited to 'src/libparser/node/executionnode.cpp')
-rw-r--r--src/libparser/node/executionnode.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/libparser/node/executionnode.cpp b/src/libparser/node/executionnode.cpp
index 096c8fe..b231416 100644
--- a/src/libparser/node/executionnode.cpp
+++ b/src/libparser/node/executionnode.cpp
@@ -2,6 +2,16 @@
#include <QUuid>
+namespace
+{
+#ifdef QT_DEBUG
+constexpr int WaitingTime{2 * 1000 * 60};
+#else
+constexpr int WaitingTime{30 * 60 * 1000};
+#endif
+
+} // namespace
+
ExecutionNode::ExecutionNode()
: m_previousNode(nullptr)
, m_result(nullptr)
@@ -43,12 +53,19 @@ ExecutionNode* ExecutionNode::getNextNode()
void ExecutionNode::execute(ExecutionNode* previous)
{
+ QElapsedTimer timer;
+ timer.start();
+
auto errorCount= m_errors.count();
run(previous);
- if(m_nextNode && errorCount == m_errors.count())
+ auto timeLimit= timer.hasExpired(WaitingTime);
+
+ if(m_nextNode && errorCount == m_errors.count() && !timeLimit)
m_nextNode->execute(this);
+ else if(timeLimit)
+ qDebug() << "Error too long" << WaitingTime << timeLimit << timer.elapsed();
}
QMap<Dice::ERROR_CODE, QString> ExecutionNode::getExecutionErrorMap()