diff options
| author | 2024-12-28 15:00:29 +0100 | |
|---|---|---|
| committer | 2024-12-29 14:46:30 +0100 | |
| commit | 5c508b351a95f416e4a599f76902b888369de1b4 (patch) | |
| tree | e3f6363fd7458fb0a46eabde6bd3a65b4746d798 /src/libparser/node/executionnode.cpp | |
| parent | 5515cd5a22ab97843f6ca1c234333ec110a9bab1 (diff) | |
| download | OneRoll-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.cpp | 19 |
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() |