Patch 9.0.0991

3 views
Skip to first unread message

Bram Moolenaar

unread,
Dec 2, 2022, 11:40:13 AM12/2/22
to vim...@googlegroups.com

Patch 9.0.0991
Problem: Crash when reading help index with various options set. (Marius
Gedminas)
Solution: Do not set wlv.c_extra to NUL when wlv.p_extra is NULL.
(closes #11651)
Files: src/drawline.c, src/testdir/test_breakindent.vim


*** ../vim-9.0.0990/src/drawline.c 2022-12-01 18:37:34.490938220 +0000
--- src/drawline.c 2022-12-02 16:38:00.415143577 +0000
***************
*** 2894,2903 ****
// into "ScreenLines".
if (c == TAB && (!wp->w_p_list || wp->w_lcs_chars.tab1))
{
! int tab_len = 0;
! long vcol_adjusted = wlv.vcol; // removed showbreak length
#ifdef FEAT_LINEBREAK
! char_u *sbr = get_showbreak_value(wp);

// only adjust the tab_len, when at the first column
// after the showbreak value was drawn
--- 2894,2903 ----
// into "ScreenLines".
if (c == TAB && (!wp->w_p_list || wp->w_lcs_chars.tab1))
{
! int tab_len = 0;
! long vcol_adjusted = wlv.vcol; // removed showbreak len
#ifdef FEAT_LINEBREAK
! char_u *sbr = get_showbreak_value(wp);

// only adjust the tab_len, when at the first column
// after the showbreak value was drawn
***************
*** 2917,2924 ****
--- 2917,2926 ----
#ifdef FEAT_LINEBREAK
if (!wp->w_p_lbr || !wp->w_p_list)
#endif
+ {
// tab amount depends on current column
wlv.n_extra = tab_len;
+ }
#ifdef FEAT_LINEBREAK
else
{
***************
*** 2940,2948 ****
# endif
if (tab_len > 0)
{
! // If wlv.n_extra > 0, it gives the number of
! // chars, to use for a tab, else we need to
! // calculate the width for a tab.
int tab2_len = mb_char2len(wp->w_lcs_chars.tab2);
len = tab_len * tab2_len;
if (wp->w_lcs_chars.tab3)
--- 2942,2950 ----
# endif
if (tab_len > 0)
{
! // If wlv.n_extra > 0, it gives the number of chars
! // to use for a tab, else we need to calculate the
! // width for a tab.
int tab2_len = mb_char2len(wp->w_lcs_chars.tab2);
len = tab_len * tab2_len;
if (wp->w_lcs_chars.tab3)
***************
*** 3018,3024 ****
? wp->w_lcs_chars.tab3
: wp->w_lcs_chars.tab1;
#ifdef FEAT_LINEBREAK
! if (wp->w_p_lbr)
wlv.c_extra = NUL; // using p_extra from above
else
#endif
--- 3020,3026 ----
? wp->w_lcs_chars.tab3
: wp->w_lcs_chars.tab1;
#ifdef FEAT_LINEBREAK
! if (wp->w_p_lbr && wlv.p_extra != NULL)
wlv.c_extra = NUL; // using p_extra from above
else
#endif
*** ../vim-9.0.0990/src/testdir/test_breakindent.vim 2022-10-13 21:54:23.962227932 +0100
--- src/testdir/test_breakindent.vim 2022-12-02 16:37:12.107174210 +0000
***************
*** 1034,1037 ****
--- 1034,1055 ----
bwipeout!
endfunc

+ func Test_linebreak_list()
+ " This was setting wlv.c_extra to NUL while wlv.p_extra is NULL
+ filetype plugin on
+ syntax enable
+ edit! $VIMRUNTIME/doc/index.txt
+ /v_P
+
+ setlocal list
+ setlocal listchars=tab:>-
+ setlocal linebreak
+ setlocal nowrap
+ setlocal filetype=help
+ redraw!
+
+ bwipe!
+ endfunc
+
+
" vim: shiftwidth=2 sts=2 expandtab
*** ../vim-9.0.0990/src/version.c 2022-12-02 15:58:34.614705476 +0000
--- src/version.c 2022-12-02 16:18:45.540445599 +0000
***************
*** 697,698 ****
--- 697,700 ----
{ /* Add new patch number below this line */
+ /**/
+ 991,
/**/

--
hundred-and-one symptoms of being an internet addict:
208. Your goals for the future are obtaining a second Gbit connection
and upgrade your NAS to all SSD

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages