diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-08-19 15:05:32 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-08-19 15:05:32 +0200 |
commit | 9aa156912867c05e0a6480925afe11c590378f09 (patch) | |
tree | 8edcc2a13208a239bf234c32f6dde2e6fc0ad01e /src/misc2.c | |
parent | 98ebd2bbec3443878dd0ed772ab67efb618f2fad (diff) | |
download | vim-git-9aa156912867c05e0a6480925afe11c590378f09.tar.gz |
patch 8.0.0962: crash with virtualedit and joining linesv8.0.0962
Problem: Crash with virtualedit and joining lines. (Joshua T Corbin, Neovim
#6726)
Solution: When using a mark check that coladd is valid.
Diffstat (limited to 'src/misc2.c')
-rw-r--r-- | src/misc2.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/misc2.c b/src/misc2.c index 541069e54..17fa424bc 100644 --- a/src/misc2.c +++ b/src/misc2.c @@ -605,7 +605,18 @@ check_cursor_col_win(win_T *win) else if (ve_flags == VE_ALL) { if (oldcoladd > win->w_cursor.col) + { win->w_cursor.coladd = oldcoladd - win->w_cursor.col; + if (win->w_cursor.col < len && win->w_cursor.coladd > 0) + { + int cs, ce; + + /* check that coladd is not more than the char width */ + getvcol(win, &win->w_cursor, &cs, NULL, &ce); + if (win->w_cursor.coladd > ce - cs) + win->w_cursor.coladd = ce - cs; + } + } else /* avoid weird number when there is a miscalculation or overflow */ win->w_cursor.coladd = 0; |