summaryrefslogtreecommitdiff
path: root/src/misc2.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-08-19 15:05:32 +0200
committerBram Moolenaar <Bram@vim.org>2017-08-19 15:05:32 +0200
commit9aa156912867c05e0a6480925afe11c590378f09 (patch)
tree8edcc2a13208a239bf234c32f6dde2e6fc0ad01e /src/misc2.c
parent98ebd2bbec3443878dd0ed772ab67efb618f2fad (diff)
downloadvim-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.c11
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;