diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-02-23 18:28:11 -0500 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-03-01 20:02:08 -0500 |
commit | ab38df2fc5185a058323a6efc440805eea9fc1f4 (patch) | |
tree | 3d31228298ea67da677e043eca3a52db6ab479b9 | |
parent | a78e8f6e1bef38bd0ad10f0681f30c43c56d703b (diff) | |
download | rneovim-ab38df2fc5185a058323a6efc440805eea9fc1f4.tar.gz rneovim-ab38df2fc5185a058323a6efc440805eea9fc1f4.tar.bz2 rneovim-ab38df2fc5185a058323a6efc440805eea9fc1f4.zip |
vim-patch:8.1.1642: may use uninitialized variable
Problem: May use uninitialized variable. (Patrick Palka)
Solution: Initialize variables earlier. (closes vim/vim#4623)
https://github.com/vim/vim/commit/ec572ad6a6cb0d4e71901951a70a4f038d48cb17
-rw-r--r-- | src/nvim/globals.h | 6 | ||||
-rw-r--r-- | src/nvim/screen.c | 30 | ||||
-rw-r--r-- | src/nvim/testdir/test_number.vim | 11 |
3 files changed, 29 insertions, 18 deletions
diff --git a/src/nvim/globals.h b/src/nvim/globals.h index 323c6cf9c3..9069c5adcb 100644 --- a/src/nvim/globals.h +++ b/src/nvim/globals.h @@ -412,9 +412,9 @@ EXTERN vimmenu_T *root_menu INIT(= NULL); */ EXTERN int sys_menu INIT(= FALSE); -/* While redrawing the screen this flag is set. It means the screen size - * ('lines' and 'rows') must not be changed. */ -EXTERN int updating_screen INIT(= FALSE); +// While redrawing the screen this flag is set. It means the screen size +// ('lines' and 'rows') must not be changed. +EXTERN int updating_screen INIT(= 0); /* * All windows are linked in a list. firstwin points to the first entry, diff --git a/src/nvim/screen.c b/src/nvim/screen.c index b6da02d9c3..4cdfec9670 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -334,10 +334,10 @@ int update_screen(int type) } return FAIL; } + updating_screen = 1; - updating_screen = TRUE; - ++display_tick; /* let syntax code know we're in a next round of - * display updating */ + display_tick++; // let syntax code know we're in a next round of + // display updating // Tricky: vim code can reset msg_scrolled behind our back, so need // separate bookkeeping for now. @@ -565,7 +565,7 @@ int update_screen(int type) wp->w_buffer->b_mod_set = false; } - updating_screen = FALSE; + updating_screen = 0; /* Clear or redraw the command line. Done last, because scrolling may * mess up the command line. */ @@ -2215,9 +2215,10 @@ win_line ( int n_skip = 0; /* nr of chars to skip for 'nowrap' */ - int fromcol = 0, tocol = 0; // start/end of inverting + 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 + bool noinvcur = false; // don't invert the cursor pos_T *top, *bot; int lnum_in_visual_area = false; pos_T pos; @@ -2416,27 +2417,26 @@ win_line ( capcol_lnum = 0; } - // - // handle visual active in this window - // - fromcol = -10; - tocol = MAXCOL; + // handle Visual active in this window if (VIsual_active && wp->w_buffer == curwin->w_buffer) { - // Visual is after curwin->w_cursor if (ltoreq(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) { diff --git a/src/nvim/testdir/test_number.vim b/src/nvim/testdir/test_number.vim index 59debcea0d..3c9afc41d5 100644 --- a/src/nvim/testdir/test_number.vim +++ b/src/nvim/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 |