1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-15 13:51:40 +00:00

Fix editor infinit loop in search_prev

Fixes godotengine#31328
This commit is contained in:
amakarenko
2019-09-02 15:15:55 +03:00
parent 7e731bbce2
commit 544c39d1e7
2 changed files with 9 additions and 8 deletions

View File

@@ -366,14 +366,12 @@ bool FindReplaceBar::search_prev() {
if (text_edit->is_selection_active()) if (text_edit->is_selection_active())
col--; // Skip currently selected word. col--; // Skip currently selected word.
if (line == result_line && col == result_col) { col -= text.length();
col -= text.length(); if (col < 0) {
if (col < 0) { line -= 1;
line -= 1; if (line < 0)
if (line < 0) line = text_edit->get_line_count() - 1;
line = text_edit->get_line_count() - 1; col = text_edit->get_line(line).length();
col = text_edit->get_line(line).length();
}
} }
return _search(flags, line, col); return _search(flags, line, col);

View File

@@ -5365,6 +5365,9 @@ bool TextEdit::search(const String &p_key, uint32_t p_search_flags, int p_from_l
break; break;
} }
pos_from = last_pos - p_key.length(); pos_from = last_pos - p_key.length();
if (pos_from < 0) {
break;
}
} }
} else { } else {
while ((last_pos = (p_search_flags & SEARCH_MATCH_CASE) ? text_line.find(p_key, pos_from) : text_line.findn(p_key, pos_from)) != -1) { while ((last_pos = (p_search_flags & SEARCH_MATCH_CASE) ? text_line.find(p_key, pos_from) : text_line.findn(p_key, pos_from)) != -1) {