From ec013afe009aabeb5ad367403dfefb5b23957e83 Mon Sep 17 00:00:00 2001 From: Jasmin Fazlic Date: Fri, 30 Jul 2021 16:16:48 +0200 Subject: [PATCH] endless loop when tokens do not represent a lambda Fixes the endless loop when traversing the callstack while debugging and the tokens do not represent a lamda. for example: `return Class{}(var);` Change-Id: I2c4dbf9df24046158147a04347aa435a7ccd02bc Reviewed-by: Christian Kandeler Reviewed-by: Qt CI Bot --- src/libs/cplusplus/ExpressionUnderCursor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/cplusplus/ExpressionUnderCursor.cpp b/src/libs/cplusplus/ExpressionUnderCursor.cpp index d53d0017752..938e1ebfa3e 100644 --- a/src/libs/cplusplus/ExpressionUnderCursor.cpp +++ b/src/libs/cplusplus/ExpressionUnderCursor.cpp @@ -183,6 +183,7 @@ int ExpressionUnderCursor::startOfExpression_helper(BackwardsScanner &tk, int in int leftParenIndex = tk.startOfMatchingBrace(currentIndex); if (tk[leftParenIndex-1].is(T_THROW)) { currentIndex = leftParenIndex-1; + continue; } else if (tk[leftParenIndex-1].is(T_RBRACKET)) { int leftBracketIndex = tk.startOfMatchingBrace(leftParenIndex); if (leftBracketIndex != leftParenIndex-1) @@ -192,9 +193,8 @@ int ExpressionUnderCursor::startOfExpression_helper(BackwardsScanner &tk, int in int leftBracketIndex = tk.startOfMatchingBrace(currentIndex); if (leftBracketIndex != currentIndex-1) return leftBracketIndex; - } else { - --currentIndex; } + --currentIndex; } } }