diff options
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r-- | src/shared/cplusplus/Parser.cpp | 8 | ||||
-rw-r--r-- | src/shared/cplusplus/Parser.h | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 69ff99708f..44f299847a 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -4507,7 +4507,13 @@ bool Parser::parseConstantExpression(ExpressionAST *&node) bool Parser::parseExpression(ExpressionAST *&node) { DEBUG_THIS_RULE(); - return parseCommaExpression(node); + if (depth > 100) + return false; + + ++depth; + bool result = parseCommaExpression(node); + --depth; + return result; } bool Parser::parseCommaExpression(ExpressionAST *&node) diff --git a/src/shared/cplusplus/Parser.h b/src/shared/cplusplus/Parser.h index 6b80133788..7d72c7ef39 100644 --- a/src/shared/cplusplus/Parser.h +++ b/src/shared/cplusplus/Parser.h @@ -314,6 +314,8 @@ private: bool _inFunctionBody: 1; bool _inObjCImplementationContext: 1; + int depth; + std::map<unsigned, TemplateArgumentListEntry> _templateArgumentList; class Rewind; |