diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2023-11-24 13:18:20 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2023-11-24 13:30:43 +0000 |
commit | badc0b4ea539ede9959f711005a9497747e972a3 (patch) | |
tree | 62f3aba106c470747a78d7196e51b74baa8ee560 | |
parent | e2c1d12a05d7726ed32056584b22c5b10df6613e (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.cpp | 4 |
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; |