# HG changeset patch # User Bram Moolenaar # Date 1562502604 -7200 # Node ID a513b81d36895375ab53c075ac50527c59bbf563 # Parent 413d523503a250d14556877aeec2129bacba0b34 patch 8.1.1642: may use uninitialized variable commit https://github.com/vim/vim/commit/ec572ad6a6cb0d4e71901951a70a4f038d48cb17 Author: Bram Moolenaar Date: Sun Jul 7 14:26:59 2019 +0200 patch 8.1.1642: may use uninitialized variable Problem: May use uninitialized variable. (Patrick Palka) Solution: Initialize variables earlier. (closes https://github.com/vim/vim/issues/4623) diff --git a/src/screen.c b/src/screen.c --- a/src/screen.c +++ b/src/screen.c @@ -607,6 +607,7 @@ update_screen(int type_arg) curwin->w_lines_valid = 0; /* don't use w_lines[].wl_size now */ return FAIL; } + updating_screen = TRUE; #ifdef FEAT_TEXT_PROP // Update popup_mask if needed. This may set w_redraw_top and w_redraw_bot @@ -614,7 +615,6 @@ update_screen(int type_arg) may_update_popup_mask(type); #endif - updating_screen = TRUE; #ifdef FEAT_SYN_HL ++display_tick; /* let syntax code know we're in a next round of * display updating */ @@ -3189,9 +3189,10 @@ win_line( int n_skip = 0; /* nr of chars to skip for 'nowrap' */ - int fromcol, tocol; /* start/end of inverting */ - int fromcol_prev = -2; /* start of inverting after cursor */ - int noinvcur = FALSE; /* don't invert the cursor */ + int fromcol = -10; // start of inverting + int tocol = MAXCOL; // end of inverting + int fromcol_prev = -2; // start of inverting after cursor + int noinvcur = FALSE; // don't invert the cursor pos_T *top, *bot; int lnum_in_visual_area = FALSE; pos_T pos; @@ -3451,39 +3452,40 @@ win_line( #endif /* - * handle visual active in this window + * handle Visual active in this window */ - fromcol = -10; - tocol = MAXCOL; if (VIsual_active && wp->w_buffer == curwin->w_buffer) { - /* Visual is after curwin->w_cursor */ if (LTOREQ_POS(curwin->w_cursor, VIsual)) { + // Visual is after curwin->w_cursor top = &curwin->w_cursor; bot = &VIsual; } - else /* Visual is before curwin->w_cursor */ - { + else + { + // Visual is before curwin->w_cursor top = &VIsual; bot = &curwin->w_cursor; } lnum_in_visual_area = (lnum >= top->lnum && lnum <= bot->lnum); - if (VIsual_mode == Ctrl_V) /* block mode */ - { + if (VIsual_mode == Ctrl_V) + { + // block mode if (lnum_in_visual_area) { fromcol = wp->w_old_cursor_fcol; tocol = wp->w_old_cursor_lcol; } } - else /* non-block mode */ - { + else + { + // non-block mode if (lnum > top->lnum && lnum <= bot->lnum) fromcol = 0; else if (lnum == top->lnum) { - if (VIsual_mode == 'V') /* linewise */ + if (VIsual_mode == 'V') // linewise fromcol = 0; else { diff --git a/src/testdir/test_number.vim b/src/testdir/test_number.vim --- a/src/testdir/test_number.vim +++ b/src/testdir/test_number.vim @@ -252,3 +252,14 @@ func Test_numberwidth_adjusted() call s:compare_lines(expect, lines) call s:close_windows() endfunc + +" This was causing a memcheck error +func Test_relativenumber_uninitialised() + new + set rnu + call setline(1, ["a", "b"]) + redraw + call feedkeys("j", 'xt') + redraw + bwipe! +endfunc diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -778,6 +778,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1642, +/**/ 1641, /**/ 1640,