Fixed #2518 (Crash when checking rockbox's firmwire)
This commit is contained in:
parent
524498e439
commit
88abeeebba
|
@ -2041,6 +2041,16 @@ bool Tokenizer::tokenize(std::istream &code,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if MACRO
|
||||||
|
for (const Token *tok = _tokens; tok; tok = tok->next())
|
||||||
|
{
|
||||||
|
if (Token::Match(tok, "if|for|while %var% ("))
|
||||||
|
{
|
||||||
|
syntaxError(tok);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Simplify JAVA/C# code
|
// Simplify JAVA/C# code
|
||||||
if (isJavaOrCSharp() && _files[0].find(".java") != std::string::npos)
|
if (isJavaOrCSharp() && _files[0].find(".java") != std::string::npos)
|
||||||
{
|
{
|
||||||
|
|
|
@ -52,6 +52,7 @@ private:
|
||||||
|
|
||||||
// don't freak out when the syntax is wrong
|
// don't freak out when the syntax is wrong
|
||||||
TEST_CASE(wrong_syntax);
|
TEST_CASE(wrong_syntax);
|
||||||
|
TEST_CASE(wrong_syntax_if_macro); // #2518 - if MACRO()
|
||||||
|
|
||||||
TEST_CASE(minus);
|
TEST_CASE(minus);
|
||||||
|
|
||||||
|
@ -522,6 +523,15 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wrong_syntax_if_macro()
|
||||||
|
{
|
||||||
|
// #2518
|
||||||
|
errout.str("");
|
||||||
|
const std::string code("void f() { if MACRO(); }");
|
||||||
|
tokenizeAndStringify(code.c_str(), false);
|
||||||
|
ASSERT_EQUALS("[test.cpp:1]: (error) syntax error\n", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
void minus()
|
void minus()
|
||||||
{
|
{
|
||||||
ASSERT_EQUALS("i = -12", tokenizeAndStringify("i = -12"));
|
ASSERT_EQUALS("i = -12", tokenizeAndStringify("i = -12"));
|
||||||
|
|
Loading…
Reference in New Issue