From badc0b4ea539ede9959f711005a9497747e972a3 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 24 Nov 2023 13:18:20 +0100 Subject: [PATCH] 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 --- src/libs/3rdparty/cplusplus/Parser.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp index 395556777dd..30e3fe0be1b 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;