aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2023-11-24 13:18:20 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2023-11-24 13:30:43 +0000
commitbadc0b4ea539ede9959f711005a9497747e972a3 (patch)
tree62f3aba106c470747a78d7196e51b74baa8ee560
parente2c1d12a05d7726ed32056584b22c5b10df6613e (diff)
CPlusPlus: Fix parser crash
The parseCompoundStatement() function can return without setting the output parameter if the maximum statement depth is exceeded. Task-number: QTCREATORBUG-29847 Change-Id: Ifd76cd948c30498863246a1b80bd0657950101ca Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r--src/libs/3rdparty/cplusplus/Parser.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp
index 395556777d..30e3fe0be1 100644
--- a/src/libs/3rdparty/cplusplus/Parser.cpp
+++ b/src/libs/3rdparty/cplusplus/Parser.cpp
@@ -4946,8 +4946,8 @@ bool Parser::parsePrimaryExpression(ExpressionAST *&node)
CompoundExpressionAST *ast = new (_pool) CompoundExpressionAST;
ast->lparen_token = consumeToken();
StatementAST *statement = nullptr;
- parseCompoundStatement(statement);
- ast->statement = statement->asCompoundStatement();
+ if (parseCompoundStatement(statement))
+ ast->statement = statement->asCompoundStatement();
match(T_RPAREN, &ast->rparen_token);
node = ast;
return true;