patch 8.0.0962: crash with virtualedit and joining lines
Problem: Crash with virtualedit and joining lines. (Joshua T Corbin, Neovim
#6726)
Solution: When using a mark check that coladd is valid.
diff --git a/src/misc2.c b/src/misc2.c
index 541069e..17fa424 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -605,7 +605,18 @@
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;