aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-02-23 18:28:11 -0500
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-03-01 20:02:08 -0500
commitab38df2fc5185a058323a6efc440805eea9fc1f4 (patch)
tree3d31228298ea67da677e043eca3a52db6ab479b9
parenta78e8f6e1bef38bd0ad10f0681f30c43c56d703b (diff)
downloadrneovim-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.h6
-rw-r--r--src/nvim/screen.c30
-rw-r--r--src/nvim/testdir/test_number.vim11
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