# HG changeset patch # User Bram Moolenaar # Date 1436706158 -7200 # Node ID 1f78058351a6fcf079783b1f28b5b77d7d98e4d8 # Parent 6cbb3af8ccf41323a0e35cba647d9d54022ac114 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. diff --git a/src/ops.c b/src/ops.c --- 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; } diff --git a/src/version.c b/src/version.c --- 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,