From 5c96a28fb64b00d0c75107242ee1b1dddf7348ab Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sun, 6 Dec 2020 22:52:15 +0100 Subject: [PATCH] Actually fix crash when creating zero sized arrays If size is zero, the array will be treated as non-existent. This fixes #50 --- source/lang/evaluator.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/lang/evaluator.cpp b/source/lang/evaluator.cpp index faa52af42..d128713e0 100644 --- a/source/lang/evaluator.cpp +++ b/source/lang/evaluator.cpp @@ -69,6 +69,9 @@ namespace hex::lang { return { nullptr, 0 }; } + if (arraySize.value() == 0) + continue; + ASTNodeVariableDecl *processedMember = new ASTNodeVariableDecl(member->getLineNumber(), member->getVariableType(), member->getVariableName(), member->getCustomVariableTypeName(), member->getOffset(), arraySize.value()); std::tie(pattern, memberSize) = this->createArrayPattern(processedMember, memberOffset); @@ -161,10 +164,8 @@ 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 }; - } + if (arraySize.value() == 0) + continue; ASTNodeVariableDecl *processedMember = new ASTNodeVariableDecl(member->getLineNumber(), member->getVariableType(), member->getVariableName(), member->getCustomVariableTypeName(), member->getOffset(), arraySize.value());