From 626665b47b57d06c4b517700fd507193872efcd1 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Wed, 5 Mar 1997 01:42:06 +0000 Subject: [PATCH] (compute_motion): When POS >= TO, don't call find_before_next_newline() as it assumes POS < TO. --- src/indent.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/indent.c b/src/indent.c index ea0de2a10d6..507b8e36cbe 100644 --- a/src/indent.c +++ b/src/indent.c @@ -1261,21 +1261,26 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width, { if (selective > 0 && indented_beyond_p (pos, selective)) { - /* Skip any number of invisible lines all at once */ - do - pos = find_before_next_newline (pos, to, 1) + 1; - while (pos < to - && indented_beyond_p (pos, selective)); - /* Allow for the " ..." that is displayed for them. */ - if (selective_rlen) + /* If (pos == to), we don't have to take care of + selective display. */ + if (pos < to) { - hpos += selective_rlen; - if (hpos >= width) - hpos = width; + /* Skip any number of invisible lines all at once */ + do + pos = find_before_next_newline (pos, to, 1) + 1; + while (pos < to + && indented_beyond_p (pos, selective)); + /* Allow for the " ..." that is displayed for them. */ + if (selective_rlen) + { + hpos += selective_rlen; + if (hpos >= width) + hpos = width; + } + --pos; + /* We have skipped the invis text, but not the + newline after. */ } - --pos; - /* We have skipped the invis text, but not the - newline after. */ } else { @@ -1295,7 +1300,8 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width, /* In selective display mode, everything from a ^M to the end of the line is invisible. Stop *before* the real newline. */ - pos = find_before_next_newline (pos, to, 1); + if (pos < to) + pos = find_before_next_newline (pos, to, 1); /* If we just skipped next_boundary, loop around in the main while and handle it. */ -- 2.39.5