Mercurial > vim
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;