[git commit] less: fix bracket search to match behavior of less 481

Denys Vlasenko vda.linux at googlemail.com
Tue Aug 16 13:27:30 UTC 2016


commit: https://git.busybox.net/busybox/commit/?id=110c6bb413ff7363e9b453edef8ae11cf7b64404
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 miscutils/less.c | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/miscutils/less.c b/miscutils/less.c
index 10e1d8e..d1d4a71 100644
--- a/miscutils/less.c
+++ b/miscutils/less.c
@@ -1589,18 +1589,23 @@ static char opp_bracket(char bracket)
 
 static void match_right_bracket(char bracket)
 {
-	unsigned i;
+	unsigned i = cur_fline;
 
-	if (cur_fline >= max_fline
-	 || strchr(flines[cur_fline], bracket) == NULL
+	if (i >= max_fline
+	 || strchr(flines[i], bracket) == NULL
 	) {
 		print_statusline("No bracket in top line");
 		return;
 	}
+
 	bracket = opp_bracket(bracket);
-	for (i = cur_fline + 1; i < max_fline; i++) {
+	for (; i < max_fline; i++) {
 		if (strchr(flines[i], bracket) != NULL) {
-			buffer_line(i);
+			/*
+			 * Line with matched right bracket becomes
+			 * last visible line
+			 */
+			buffer_line(i - max_displayed_line);
 			return;
 		}
 	}
@@ -1609,18 +1614,22 @@ static void match_right_bracket(char bracket)
 
 static void match_left_bracket(char bracket)
 {
-	int i;
+	int i = cur_fline + max_displayed_line;
 
-	if (cur_fline + max_displayed_line >= max_fline
-	 || strchr(flines[cur_fline + max_displayed_line], bracket) == NULL
+	if (i >= max_fline
+	 || strchr(flines[i], bracket) == NULL
 	) {
 		print_statusline("No bracket in bottom line");
 		return;
 	}
 
 	bracket = opp_bracket(bracket);
-	for (i = cur_fline + max_displayed_line; i >= 0; i--) {
+	for (; i >= 0; i--) {
 		if (strchr(flines[i], bracket) != NULL) {
+			/*
+			 * Line with matched left bracket becomes
+			 * first visible line
+			 */
 			buffer_line(i);
 			return;
 		}


More information about the busybox-cvs mailing list