To: vim_dev@googlegroups.com Subject: Patch 9.0.0991 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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 -- Bram@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 ///