diff options
author | Bram Moolenaar <Bram@vim.org> | 2015-07-12 15:02:38 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2015-07-12 15:02:38 +0200 |
commit | 3ec326198029d5a59413b3b8b33dbc9c06c4f28b (patch) | |
tree | a0d5847ead9364f345efacc6f830a1b5638aaae9 /src/ops.c | |
parent | ae2fe73abc954b8fd3dbd7994daa8e31e6690bd0 (diff) | |
download | vim-git-3ec326198029d5a59413b3b8b33dbc9c06c4f28b.tar.gz |
patch 7.4.779v7.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.
Diffstat (limited to 'src/ops.c')
-rw-r--r-- | src/ops.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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; } |