diff options
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Parser.cpp')
-rw-r--r-- | src/libs/3rdparty/cplusplus/Parser.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp index 962afdf240..da67e51b63 100644 --- a/src/libs/3rdparty/cplusplus/Parser.cpp +++ b/src/libs/3rdparty/cplusplus/Parser.cpp @@ -5593,7 +5593,13 @@ void Parser::parseExpressionWithOperatorPrecedence(ExpressionAST *&lhs, int minP { DEBUG_THIS_RULE(); + unsigned iterations = 0; while (precedence(tok().kind(), _templateArguments) >= minPrecedence) { + if (++iterations > MAX_EXPRESSION_DEPTH) { + warning(cursor(), "Reached parse limit for expression"); + return; + } + const int operPrecedence = precedence(tok().kind(), _templateArguments); const int oper = consumeToken(); |