diff src/misc2.c @ 12164:5d82470552ce v8.0.0962

patch 8.0.0962: crash with virtualedit and joining lines commit https://github.com/vim/vim/commit/9aa156912867c05e0a6480925afe11c590378f09 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Aug 19 15:05:32 2017 +0200 patch 8.0.0962: crash with virtualedit and joining lines Problem: Crash with virtualedit and joining lines. (Joshua T Corbin, Neovim https://github.com/vim/vim/issues/6726) Solution: When using a mark check that coladd is valid.
author Christian Brabandt <cb@256bit.org>
date Sat, 19 Aug 2017 15:15:03 +0200
parents 7791a15353dc
children 24abce52ad20
line wrap: on
line diff
--- 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;