]> git.eshelyaron.com Git - emacs.git/commitdiff
(compute_motion): Return correctly if skip_invisible
authorRichard M. Stallman <rms@gnu.org>
Tue, 27 May 1997 04:59:29 +0000 (04:59 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 27 May 1997 04:59:29 +0000 (04:59 +0000)
takes us past TO.

src/indent.c

index 507b8e36cbef5d6c1b47029ac88b5fdd52d399c9..663923538283938556b52e478a919ade13d44cc2 100644 (file)
@@ -997,6 +997,8 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
     {
       while (pos == next_boundary)
        {
+         int newpos;
+
          /* If the caller says that the screen position came from an earlier
             call to compute_motion, then we've already accounted for the
             overlay strings at point.  This is only true the first time
@@ -1020,7 +1022,12 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
             (but not necessarily all that there are here),
             and store in next_boundary the next position where
             we need to call skip_invisible.  */
-         pos = skip_invisible (pos, &next_boundary, to, window);
+         newpos = skip_invisible (pos, &next_boundary, to, window);
+
+         if (newpos >= to)
+           goto after_loop;
+
+         pos = newpos;
        }
 
       /* Handle right margin.  */
@@ -1361,6 +1368,8 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
        }
     }
 
+ after_loop:
+
   /* Remember any final width run in the cache.  */
   if (current_buffer->width_run_cache
       && width_run_width == 1