1
0
forked from aniani/vim

patch 8.0.1433: illegal memory access after undo

Problem:    Illegal memory access after undo. (Dominique Pelle)
Solution:   Avoid the column becomes negative. (Christian Brabandt,
            closes #2533)
This commit is contained in:
Bram Moolenaar
2018-01-27 21:01:34 +01:00
parent 2ec364e94d
commit 95dbcbea6d
3 changed files with 16 additions and 1 deletions

View File

@@ -1784,6 +1784,7 @@ dbcs_ptr2char(char_u *p)
* Convert a UTF-8 byte sequence to a wide character.
* If the sequence is illegal or truncated by a NUL the first byte is
* returned.
* For an overlong sequence this may return zero.
* Does not include composing characters, of course.
*/
int
@@ -4112,6 +4113,9 @@ mb_adjustpos(buf_T *buf, pos_T *lp)
)
{
p = ml_get_buf(buf, lp->lnum, FALSE);
if (*p == NUL || (int)STRLEN(p) < lp->col)
lp->col = 0;
else
lp->col -= (*mb_head_off)(p, p + lp->col);
#ifdef FEAT_VIRTUALEDIT
/* Reset "coladd" when the cursor would be on the right half of a

View File

@@ -350,3 +350,12 @@ func Test_cmd_in_reg_undo()
only!
let @a=''
endfunc
" This used to cause an illegal memory access
func Test_undo_append()
new
call feedkeys("axx\<Esc>v", 'xt')
undo
norm o
quit
endfunc

View File

@@ -771,6 +771,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1433,
/**/
1432,
/**/