mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2026-09-10 15:56:35 -04:00
Fix an infloop during cursor movement
* src/xdisp.c (move_it_vertically_backward): Prevent infloop due to overlays with embedded newlines at BOB. (Bug#81567)
This commit is contained in:
parent
e435a8e869
commit
165152e7cd
10
src/xdisp.c
10
src/xdisp.c
|
|
@ -11298,10 +11298,18 @@ move_it_vertically_backward (struct it *it, int dy)
|
|||
y-distance. */
|
||||
SAVE_IT (it2, *it, it2data);
|
||||
it2.max_ascent = it2.max_descent = 0;
|
||||
ptrdiff_t to_pos = start_pos;
|
||||
do
|
||||
{
|
||||
/* Avoid inflooping of there's a large display string with several
|
||||
embedded newlines, which makes move_it_to stop after START_POS
|
||||
but still inside a display or overlay string. */
|
||||
if (IT_CHARPOS (it2) >= start_pos)
|
||||
to_pos = -1;
|
||||
move_it_to (&it2, start_pos, -1, -1, it2.vpos + 1,
|
||||
MOVE_TO_POS | MOVE_TO_VPOS);
|
||||
(to_pos > 0
|
||||
? (MOVE_TO_POS | MOVE_TO_VPOS)
|
||||
: MOVE_TO_VPOS));
|
||||
}
|
||||
while (!(IT_POS_VALID_AFTER_MOVE_P (&it2)
|
||||
/* If we are in a display string which starts at START_POS,
|
||||
|
|
|
|||
Loading…
Reference in a new issue