From ec572ad6a6cb0d4e71901951a70a4f038d48cb17 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 7 Jul 2019 14:26:59 +0200 Subject: patch 8.1.1642: may use uninitialized variable Problem: May use uninitialized variable. (Patrick Palka) Solution: Initialize variables earlier. (closes #4623) --- src/screen.c | 26 ++++++++++++++------------ src/testdir/test_number.vim | 11 +++++++++++ src/version.c | 2 ++ 3 files changed, 27 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/screen.c b/src/screen.c index 58866bf48..825b7ab0e 100644 --- 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 index 415aefc85..81326bce1 100644 --- 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 index 663f92f49..f71c75c76 100644 --- a/src/version.c +++ b/src/version.c @@ -777,6 +777,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1642, /**/ 1641, /**/ -- cgit v1.2.1