diff --git a/src/script/C4AulParse.cpp b/src/script/C4AulParse.cpp index 42a22138c..3071709a8 100644 --- a/src/script/C4AulParse.cpp +++ b/src/script/C4AulParse.cpp @@ -791,11 +791,11 @@ void C4AulParse::Parse_WarningPragma() auto start = cursor; cursor = std::find_if(start, end, IsWhiteSpace); bool enable_warning = false; - if (std::equal(start, cursor, C4Aul_Warning_enable)) + if (cursor - start == sizeof(C4Aul_Warning_enable) - 1 && std::equal(start, cursor, C4Aul_Warning_enable)) { enable_warning = true; } - else if (std::equal(start, cursor, C4Aul_Warning_disable)) + else if (cursor - start == sizeof(C4Aul_Warning_disable) - 1 && std::equal(start, cursor, C4Aul_Warning_disable)) { enable_warning = false; } diff --git a/tests/aul/AulSyntaxTest.cpp b/tests/aul/AulSyntaxTest.cpp index 7dab56a92..fecfa48dc 100644 --- a/tests/aul/AulSyntaxTest.cpp +++ b/tests/aul/AulSyntaxTest.cpp @@ -94,6 +94,10 @@ TEST(AulSyntaxTest, PragmaWarningWithInsufficientData) EXPECT_THROW(ParseScript("#warning\n"), C4AulParseError); EXPECT_THROW(ParseScript("#warning "), C4AulParseError); EXPECT_THROW(ParseScript("#warning \n"), C4AulParseError); + EXPECT_THROW(ParseScript("#warning e"), C4AulParseError); + EXPECT_THROW(ParseScript("#warning enabl"), C4AulParseError); + EXPECT_THROW(ParseScript("#warning d"), C4AulParseError); + EXPECT_THROW(ParseScript("#warning disabl"), C4AulParseError); } using namespace ::aul::ast;