changeset 6921:1f78058351a6 v7.4.779

patch 7.4.779 Problem: Using CTRL-A in a line without a number moves the cursor. May cause a crash when at the start of the line. (Urtica Dioica) Solution: Do not move the cursor if no number was changed.
author Bram Moolenaar <bram@vim.org>
date Sun, 12 Jul 2015 15:02:38 +0200
parents 6cbb3af8ccf4
children 681921dee50d
files src/ops.c src/version.c
diffstat 2 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/ops.c
+++ b/src/ops.c
@@ -5404,6 +5404,7 @@ do_addsub(command, Prenum1, g_cmd)
     int		lnum = curwin->w_cursor.lnum;
     int		lnume = curwin->w_cursor.lnum;
     int		startcol;
+    int		did_change = FALSE;
 
     dohex = (vim_strchr(curbuf->b_p_nf, 'x') != NULL);	/* "heX" */
     dooct = (vim_strchr(curbuf->b_p_nf, 'o') != NULL);	/* "Octal" */
@@ -5547,6 +5548,7 @@ do_addsub(command, Prenum1, g_cmd)
 #endif
 	    }
 	    curwin->w_cursor.col = col;
+	    did_change = TRUE;
 	    (void)del_char(FALSE);
 	    ins_char(firstdigit);
 	}
@@ -5619,6 +5621,7 @@ do_addsub(command, Prenum1, g_cmd)
 	     * Delete the old number.
 	     */
 	    curwin->w_cursor.col = col;
+	    did_change = TRUE;
 	    todel = length;
 	    c = gchar_cursor();
 
@@ -5713,7 +5716,8 @@ do_addsub(command, Prenum1, g_cmd)
 	RLADDSUBFIX(ptr);
 #endif
     }
-    --curwin->w_cursor.col;
+    if (did_change && curwin->w_cursor.col > 0)
+	--curwin->w_cursor.col;
     return OK;
 }
 
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    779,
+/**/
     778,
 /**/
     777,