Mercurial > vim
diff src/window.c @ 34389:8b0e390b61fe v9.1.0121
patch 9.1.0121: Infinite loop or signed overflow with 'smoothscroll'
Commit: https://github.com/vim/vim/commit/02fcae02a926e4e8379d77fb716da4202029882d
Author: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Date: Wed Feb 21 19:40:44 2024 +0100
patch 9.1.0121: Infinite loop or signed overflow with 'smoothscroll'
Problem: infinite loop in win_update with 'smoothscroll' set when
window width is equal to textoff, or signed integer overflow
if smaller.
Solution: don't revalidate wp->w_skipcol in that case, as no buffer text
is being shown. (Sean Dewar)
Don't instead reset w_skipcol; that would lose the scroll position
within the line, which may be undesirable if the window is made wider
later.
Also include changes from the splitmove PR #14042 that I (in my infinite
Git wisdom) forgot to commit. This includes a change to
Test_window_split_no_room to ensure it doesn't fail for some screen
sizes.
Move Test_smoothscroll_in_zero_width_window to test_scroll_opt.vim, as
that file feels more appropriate.
closes: #14068
Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 21 Feb 2024 19:45:06 +0100 |
parents | a84fe48ae523 |
children | e0d4ce8ebf12 |
line wrap: on
line diff
--- a/src/window.c +++ b/src/window.c @@ -54,7 +54,7 @@ static void win_goto_hor(int left, long static void frame_add_height(frame_T *frp, int n); static void last_status_rec(frame_T *fr, int statusline); static void frame_flatten(frame_T *frp); -static void winframe_restore(win_T *wp, int dir, frame_T *to_flatten); +static void winframe_restore(win_T *wp, int dir, frame_T *unflat_altfr); static int make_snapshot_rec(frame_T *fr, frame_T **frp); static void clear_snapshot(tabpage_T *tp, int idx);