summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r--src/shared/cplusplus/Parser.cpp8
-rw-r--r--src/shared/cplusplus/Parser.h2
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;