From: Richard M. Stallman Date: Tue, 27 May 1997 04:59:29 +0000 (+0000) Subject: (compute_motion): Return correctly if skip_invisible X-Git-Tag: emacs-20.1~1980 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=98136db32ab60663ab450f73e4bf1c3fa12cb2fc;p=emacs.git (compute_motion): Return correctly if skip_invisible takes us past TO. --- diff --git a/src/indent.c b/src/indent.c index 507b8e36cbe..66392353828 100644 --- a/src/indent.c +++ b/src/indent.c @@ -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