Fix SIGSEV with malformed functions

This commit is contained in:
Deukhoofd 2019-08-24 13:54:01 +02:00
parent 8103099287
commit 18ffe00bc4
Signed by: Deukhoofd
GPG Key ID: ADF2E9256009EDCE
2 changed files with 11 additions and 2 deletions

View File

@ -148,13 +148,13 @@ namespace Porygon::Parser {
}
auto identifier = this->Next();
auto next = this->Next();
if (type->GetKind() != TokenKind::Identifier && !hasErrors) {
if (!hasErrors && type->GetKind() != TokenKind::Identifier) {
this->ScriptData->Diagnostics->LogError(Diagnostics::DiagnosticCode::UnexpectedToken, type->GetStartPosition(),
type->GetLength());
hasErrors = true;
continue;
}
if (identifier->GetKind() != TokenKind::Identifier && !hasErrors) {
if (!hasErrors && identifier->GetKind() != TokenKind::Identifier) {
this->ScriptData->Diagnostics->LogError(Diagnostics::DiagnosticCode::UnexpectedToken, identifier->GetStartPosition(),
identifier->GetLength());
hasErrors = true;

View File

@ -189,5 +189,14 @@ stringResult = add('foo', 'bar')
delete stringVar;
}
TEST_CASE( "Malformed parameter logs error", "[integration]" ) {
Script* script = Script::Create(uR"(
function blockOwnCritical( move, target, hitNumber )
return true
end
)");
REQUIRE(script->Diagnostics -> HasErrors());
delete script;
}
#endif