diff src/ops.c @ 7576:e008ca0e2af2 v7.4.1088

commit https://github.com/vim/vim/commit/7ae4fbca552c972eb3645ece02a2807e517610d7 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jan 12 21:00:40 2016 +0100 patch 7.4.1088 Problem: Coverity warns for uninitialized variables. Only one is an actual problem. Solution: Move the conditions. Don't use endpos if handling an error.
author Christian Brabandt <cb@256bit.org>
date Tue, 12 Jan 2016 21:15:05 +0100
parents b872724c37db
children 0b6c37dd858d
line wrap: on
line diff
--- a/src/ops.c
+++ b/src/ops.c
@@ -5371,9 +5371,9 @@ op_addsub(oap, Prenum1, g_cmd)
     }
     else
     {
-	int one_change;
-	int length;
-	pos_T startpos;
+	int	one_change;
+	int	length;
+	pos_T	startpos;
 
 	if (u_save((linenr_T)(oap->start.lnum - 1),
 					(linenr_T)(oap->end.lnum + 1)) == FAIL)
@@ -5388,32 +5388,29 @@ op_addsub(oap, Prenum1, g_cmd)
 		pos.col = bd.textcol;
 		length = bd.textlen;
 	    }
-	    else
+	    else if (oap->motion_type == MLINE)
 	    {
-		if (oap->motion_type == MLINE)
-		{
-		    curwin->w_cursor.col = 0;
-		    pos.col = 0;
-		    length = (colnr_T)STRLEN(ml_get(pos.lnum));
-		}
-		else if (oap->motion_type == MCHAR)
+		curwin->w_cursor.col = 0;
+		pos.col = 0;
+		length = (colnr_T)STRLEN(ml_get(pos.lnum));
+	    }
+	    else /* oap->motion_type == MCHAR */
+	    {
+		if (!oap->inclusive)
+		    dec(&(oap->end));
+		length = (colnr_T)STRLEN(ml_get(pos.lnum));
+		pos.col = 0;
+		if (pos.lnum == oap->start.lnum)
 		{
-		    if (!oap->inclusive)
-			dec(&(oap->end));
-		    length = (colnr_T)STRLEN(ml_get(pos.lnum));
-		    pos.col = 0;
-		    if (pos.lnum == oap->start.lnum)
-		    {
-			pos.col += oap->start.col;
-			length -= oap->start.col;
-		    }
-		    if (pos.lnum == oap->end.lnum)
-		    {
-			length = (int)STRLEN(ml_get(oap->end.lnum));
-			if (oap->end.col >= length)
-			    oap->end.col = length - 1;
-			length = oap->end.col - pos.col + 1;
-		    }
+		    pos.col += oap->start.col;
+		    length -= oap->start.col;
+		}
+		if (pos.lnum == oap->end.lnum)
+		{
+		    length = (int)STRLEN(ml_get(oap->end.lnum));
+		    if (oap->end.col >= length)
+			oap->end.col = length - 1;
+		    length = oap->end.col - pos.col + 1;
 		}
 	    }
 	    one_change = do_addsub(oap->op_type, &pos, length, amount);
@@ -5493,7 +5490,7 @@ do_addsub(op_type, pos, length, Prenum1)
     int		was_positive = TRUE;
     int		visual = VIsual_active;
     int		did_change = FALSE;
-    pos_T	t = curwin->w_cursor;
+    pos_T	save_cursor = curwin->w_cursor;
     int		maxlen = 0;
     pos_T	startpos;
     pos_T	endpos;
@@ -5819,9 +5816,6 @@ do_addsub(op_type, pos, length, Prenum1)
 	    --curwin->w_cursor.col;
     }
 
-theend:
-    if (visual)
-	curwin->w_cursor = t;
     if (did_change)
     {
 	/* set the '[ and '] marks */
@@ -5831,6 +5825,10 @@ theend:
 	    --curbuf->b_op_end.col;
     }
 
+theend:
+    if (visual)
+	curwin->w_cursor = save_cursor;
+
     return did_change;
 }