changeset 17136:424932eba3e8

(compute_motion): When POS >= TO, don't call find_before_next_newline() as it assumes POS < TO.
author Kenichi Handa <handa@m17n.org>
date Wed, 05 Mar 1997 01:42:06 +0000
parents 1814adcc2648
children bd8d38879c97
files src/indent.c
diffstat 1 files changed, 20 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/indent.c	Tue Mar 04 18:00:30 1997 +0000
+++ b/src/indent.c	Wed Mar 05 01:42:06 1997 +0000
@@ -1261,21 +1261,26 @@
 	    {
 	      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 @@
 	      /* 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.  */