aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2021-11-08 11:10:32 +0100
committerDavid Schulz <david.schulz@qt.io>2021-11-08 10:42:49 +0000
commit33122b564a34cb0cd73c1c4f3e22efefbaef2c02 (patch)
treee1c09820677517f73fd62d5ce721a479cf5faa4e
parent6077bde638c481df9135e045370e571178df15ef (diff)
Editor: prevent endless loop for empty search results
Fixes: QTCREATORBUG-26536 Change-Id: Ia49559c5b340085ef8371d8d90bda26bb6d728bb Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
-rw-r--r--src/plugins/coreplugin/find/basetextfind.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/plugins/coreplugin/find/basetextfind.cpp b/src/plugins/coreplugin/find/basetextfind.cpp
index ce21336223..12afaf8a65 100644
--- a/src/plugins/coreplugin/find/basetextfind.cpp
+++ b/src/plugins/coreplugin/find/basetextfind.cpp
@@ -421,10 +421,13 @@ QTextCursor BaseTextFind::findOne(const QRegularExpression &expr,
QTextCursor found = document()->find(expr, from, options);
while (!found.isNull() && !inScope(found)) {
if (!found.hasSelection()) {
- from = found;
- found.movePosition(options & QTextDocument::FindBackward
- ? QTextCursor::PreviousCharacter
- : QTextCursor::NextCharacter);
+ if (found.movePosition(options & QTextDocument::FindBackward
+ ? QTextCursor::PreviousCharacter
+ : QTextCursor::NextCharacter)) {
+ from = found;
+ } else {
+ return {};
+ }
} else {
from.setPosition(options & QTextDocument::FindBackward ? found.selectionStart()
: found.selectionEnd());