aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-04-13 08:32:51 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-04-13 08:32:51 +0000
commit24f824edb33597b8d43cc12f6b556cb6d3565b89 (patch)
tree6176ce9a7309de8c5e29a688ad909f56488509ca
parentffa4499c9f55e652e71acd0c4e5e9412ede37050 (diff)
downloadbusybox-24f824edb33597b8d43cc12f6b556cb6d3565b89.tar.gz
less: fix somewhat elusive case when less gets stuck in search mode
function old new delta read_lines 719 730 +11 goto_match 141 116 -25
-rw-r--r--miscutils/less.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/miscutils/less.c b/miscutils/less.c
index 1a67ca7ce..37ec5d976 100644
--- a/miscutils/less.c
+++ b/miscutils/less.c
@@ -384,6 +384,10 @@ static void read_lines(void)
linepos = 0;
} /* end of "read lines until we reach cur_fline" loop */
fill_match_lines(old_max_fline);
+#if ENABLE_FEATURE_LESS_REGEXP
+ /* prevent us from being stuck in search for a match */
+ wanted_match = -1;
+#endif
#undef readbuf
}
@@ -904,13 +908,8 @@ static void goto_match(int match)
match = 0;
/* Try to find next match if eof isn't reached yet */
if (match >= num_matches && eof_error > 0) {
- wanted_match = match;
+ wanted_match = match; /* "I want to read until I see N'th match" */
read_lines();
- if (wanted_match >= num_matches) {
- /* We still failed to find it. Prevent future
- * read_lines() from trying... */
- wanted_match = num_matches - 1;
- }
}
if (num_matches) {
normalize_match_pos(match);