diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 952ba4b6c00..faf21fe2fd9 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -8945,6 +8945,8 @@ void Tokenizer::findGarbageCode() const if (Token::Match(tok, "!|~ %comp%") && !(cpp && tok->strAt(1) == ">" && Token::simpleMatch(tok->tokAt(-1), "operator"))) syntaxError(tok); + if (Token::Match(tok, "%comp% {") && (!cpp || tok->str() != ">")) + syntaxError(tok); if (Token::Match(tok, "] %name%") && (!cpp || !(tok->tokAt(1)->isKeyword() || (tok->tokAt(-1) && Token::simpleMatch(tok->tokAt(-2), "delete ["))))) { if (tok->next()->isUpperCaseName()) unknownMacroError(tok->next()); diff --git a/test/cli/fuzz-crash/crash-cd91802f0554ab425b82191389c9db2be0d50040 b/test/cli/fuzz-crash/crash-cd91802f0554ab425b82191389c9db2be0d50040 new file mode 100644 index 00000000000..b2a885a35d3 --- /dev/null +++ b/test/cli/fuzz-crash/crash-cd91802f0554ab425b82191389c9db2be0d50040 @@ -0,0 +1 @@ +{f F<{enum{E=1};}>} \ No newline at end of file