summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-07-07 14:26:59 +0200
committerBram Moolenaar <Bram@vim.org>2019-07-07 14:26:59 +0200
commitec572ad6a6cb0d4e71901951a70a4f038d48cb17 (patch)
treea91b2770fd2afb1981c2baf30af7af5372a5a42e
parent6cc7e21412487ff8bd531c73ac9325f5ba2409a9 (diff)
patch 8.1.1642: may use uninitialized variablev8.1.1642
Problem: May use uninitialized variable. (Patrick Palka) Solution: Initialize variables earlier. (closes #4623)
-rw-r--r--src/screen.c26
-rw-r--r--src/testdir/test_number.vim11
-rw-r--r--src/version.c2
3 files changed, 27 insertions, 12 deletions
diff --git a/src/screen.c b/src/screen.c
index 58866bf48a..825b7ab0e8 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 415aefc858..81326bce14 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 663f92f49d..f71c75c760 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,