search: don't line-wrap unless we actually have a match on the next row

When matching characters, we moved on to next row directly after
matching the last character in a row.

This was wrong since if that last character was the last matching
character, we tried to create a selection that was on the wrong row.
This commit is contained in:
Daniel Eklöf 2019-12-03 19:17:51 +01:00
parent d94fc80966
commit 10cf722617
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -148,10 +148,7 @@ search_update(struct terminal *term)
size_t match_len = 0;
for (size_t i = 0; i < term->search.len; i++, match_len++) {
if (wcsncasecmp(&row->cells[end_col].wc, &term->search.buf[i], 1) != 0)
break;
if (++end_col >= term->cols) {
if (end_col >= term->cols) {
if (end_row + 1 > grid_row_absolute(term->grid, term->grid->offset + term->rows - 1)) {
/* Don't continue past end of the world */
break;
@ -161,6 +158,11 @@ search_update(struct terminal *term)
end_col = 0;
row = term->grid->rows[end_row];
}
if (wcsncasecmp(&row->cells[end_col].wc, &term->search.buf[i], 1) != 0)
break;
end_col++;
}
if (match_len != term->search.len) {