changeset 17286:a513b81d3689 v8.1.1642

patch 8.1.1642: may use uninitialized variable commit https://github.com/vim/vim/commit/ec572ad6a6cb0d4e71901951a70a4f038d48cb17 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 7 14:26:59 2019 +0200 patch 8.1.1642: may use uninitialized variable Problem: May use uninitialized variable. (Patrick Palka) Solution: Initialize variables earlier. (closes https://github.com/vim/vim/issues/4623)
author Bram Moolenaar <Bram@vim.org>
date Sun, 07 Jul 2019 14:30:04 +0200
parents 413d523503a2
children 1709eeb719e2
files src/screen.c src/testdir/test_number.vim src/version.c
diffstat 3 files changed, 30 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- 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
 		    {
--- 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
--- 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,