To: vim_dev@googlegroups.com Subject: Patch 8.0.1433 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.0.1433 Problem: Illegal memory access after undo. (Dominique Pelle) Solution: Avoid the column becomes negative. (Christian Brabandt, closes #2533) Files: src/mbyte.c, src/testdir/test_undo.vim *** ../vim-8.0.1432/src/mbyte.c 2017-11-27 22:48:57.909206815 +0100 --- src/mbyte.c 2018-01-27 20:57:59.795745082 +0100 *************** *** 1784,1789 **** --- 1784,1790 ---- * 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,4118 **** ) { p = ml_get_buf(buf, lp->lnum, FALSE); ! 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 * double-wide character. */ --- 4113,4122 ---- ) { 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 * double-wide character. */ *** ../vim-8.0.1432/src/testdir/test_undo.vim 2017-11-11 23:37:04.192694223 +0100 --- src/testdir/test_undo.vim 2018-01-27 20:53:04.973855995 +0100 *************** *** 350,352 **** --- 350,361 ---- only! let @a='' endfunc + + " This used to cause an illegal memory access + func Test_undo_append() + new + call feedkeys("axx\v", 'xt') + undo + norm o + quit + endfunc *** ../vim-8.0.1432/src/version.c 2018-01-27 11:52:08.717774798 +0100 --- src/version.c 2018-01-27 21:01:11.562375432 +0100 *************** *** 773,774 **** --- 773,776 ---- { /* Add new patch number below this line */ + /**/ + 1433, /**/ -- hundred-and-one symptoms of being an internet addict: 261. You find diskettes in your pockets when doing laundry. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///