Mercurial > vim
comparison src/move.c @ 34898:4e6b29ea6ed2 v9.1.0310
patch 9.1.0310: Filler lines not checked properly in get_scroll_overlap()
Commit: https://github.com/vim/vim/commit/92325540876252eb7375e34ff8f92cd4265fa7ae
Author: zeertzjq <zeertzjq@outlook.com>
Date: Fri Apr 12 18:38:38 2024 +0200
patch 9.1.0310: Filler lines not checked properly in get_scroll_overlap()
Problem: Filler lines not checked properly in get_scroll_overlap().
Solution: Add missing parentheses (zeertzjq).
The missing parentheses causes the second argument to diff_check_fill()
to always be 0 as it is the result of a comparison between a positive
integer and -1 (the value of BACKWARD), in which case diff_check_fill()
always returns 0 instead of the number of filler lines above a line.
It's very hard to add a test for this, because this mistake at most
leads to 2 screen lines of difference in scrolling behavior, and in
cases where it may indeed lead to a difference in behavior, neither
behavior achieves complete symmetry between CTRL-F and CTRL-B.
closes: #14527
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 12 Apr 2024 18:45:07 +0200 |
parents | a93a9b349a5e |
children | 8f3fc2bcb321 |
comparison
equal
deleted
inserted
replaced
34897:56f77a6b54aa | 34898:4e6b29ea6ed2 |
---|---|
3100 || (dir == FORWARD && curwin->w_botline > curbuf->b_ml.ml_line_count)) | 3100 || (dir == FORWARD && curwin->w_botline > curbuf->b_ml.ml_line_count)) |
3101 return min_height + 2; // no overlap, still handle 'smoothscroll' | 3101 return min_height + 2; // no overlap, still handle 'smoothscroll' |
3102 | 3102 |
3103 loff.lnum = dir == FORWARD ? curwin->w_botline : curwin->w_topline - 1; | 3103 loff.lnum = dir == FORWARD ? curwin->w_botline : curwin->w_topline - 1; |
3104 #ifdef FEAT_DIFF | 3104 #ifdef FEAT_DIFF |
3105 loff.fill = diff_check_fill(curwin, loff.lnum + dir == BACKWARD) | 3105 loff.fill = diff_check_fill(curwin, loff.lnum + (dir == BACKWARD)) |
3106 - (dir == FORWARD ? curwin->w_filler_rows : curwin->w_topfill); | 3106 - (dir == FORWARD ? curwin->w_filler_rows : curwin->w_topfill); |
3107 loff.height = loff.fill > 0 ? 1 : plines_nofill(loff.lnum); | 3107 loff.height = loff.fill > 0 ? 1 : plines_nofill(loff.lnum); |
3108 #else | 3108 #else |
3109 loff.height = plines(loff.lnum); | 3109 loff.height = plines(loff.lnum); |
3110 #endif | 3110 #endif |