From 6456a6880595d9d4b81d8bfca0f889297d11e1be Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sat, 5 Dec 2020 10:36:30 +0100 Subject: [PATCH] Fixed crash when array size variable has a value of zero --- source/lang/evaluator.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/lang/evaluator.cpp b/source/lang/evaluator.cpp index f5241c621..d6bc05a74 100644 --- a/source/lang/evaluator.cpp +++ b/source/lang/evaluator.cpp @@ -159,6 +159,11 @@ namespace hex::lang { return { nullptr, 0 }; } + if (arraySize.value() == 0) { + this->m_error = { varDeclNode->getLineNumber(), hex::format("Value of '%s' is zero", member->getArraySizeVariable().value().c_str()) }; + return { nullptr, 0 }; + } + ASTNodeVariableDecl *processedMember = new ASTNodeVariableDecl(member->getLineNumber(), member->getVariableType(), member->getVariableName(), member->getCustomVariableTypeName(), member->getOffset(), arraySize.value()); std::tie(pattern, memberSize) = this->createArrayPattern(processedMember, memberOffset); @@ -220,8 +225,6 @@ namespace hex::lang { std::pair Evaluator::createArrayPattern(ASTNodeVariableDecl *varDeclNode, u64 offset) { std::vector entries; - auto arraySizeVariable = varDeclNode->getArraySizeVariable(); - size_t arrayOffset = 0; std::optional arrayColor; for (u32 i = 0; i < varDeclNode->getArraySize(); i++) {