diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-07-07 14:26:59 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-07-07 14:26:59 +0200 |
commit | ec572ad6a6cb0d4e71901951a70a4f038d48cb17 (patch) | |
tree | a91b2770fd2afb1981c2baf30af7af5372a5a42e /src | |
parent | 6cc7e21412487ff8bd531c73ac9325f5ba2409a9 (diff) | |
download | vim-git-ec572ad6a6cb0d4e71901951a70a4f038d48cb17.tar.gz |
patch 8.1.1642: may use uninitialized variablev8.1.1642
Problem: May use uninitialized variable. (Patrick Palka)
Solution: Initialize variables earlier. (closes #4623)
Diffstat (limited to 'src')
-rw-r--r-- | src/screen.c | 26 | ||||
-rw-r--r-- | src/testdir/test_number.vim | 11 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 27 insertions, 12 deletions
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 @@ -778,6 +778,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1642, +/**/ 1641, /**/ 1640, |