From 10cf7226179a8598239eda3be0566b515ecbb11a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 3 Dec 2019 19:17:51 +0100 Subject: [PATCH] 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. --- search.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/search.c b/search.c index 1e46852e..dec20c02 100644 --- a/search.c +++ b/search.c @@ -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) {