Mercurial > vim
changeset 14893:291656f731c9 v8.1.0458
patch 8.1.0458: ml_get error and crash when using "do"
commit https://github.com/vim/vim/commit/df77cef92ec034796723ffa3adb12e8b46daa98e
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Oct 7 17:46:42 2018 +0200
patch 8.1.0458: ml_get error and crash when using "do"
Problem: Ml_get error and crash when using "do".
Solution: Adjust cursor position also when diffupdate is not needed.
(Hirohito Higashi)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 07 Oct 2018 18:00:05 +0200 |
parents | 983b36c27a2b |
children | 6e8a71f2b3b7 |
files | src/diff.c src/testdir/test_diffmode.vim src/version.c |
diffstat | 3 files changed, 34 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/diff.c +++ b/src/diff.c @@ -2848,18 +2848,19 @@ ex_diffgetput(exarg_T *eap) theend: diff_busy = FALSE; if (diff_need_update) - { + ex_diffupdate(NULL); + + // Check that the cursor is on a valid character and update it's + // position. When there were filler lines the topline has become + // invalid. + check_cursor(); + changed_line_abv_curs(); + + if (diff_need_update) + // redraw already done by ex_diffupdate() diff_need_update = FALSE; - ex_diffupdate(NULL); - } else { - // Check that the cursor is on a valid character and update it's - // position. When there were filler lines the topline has become - // invalid. - check_cursor(); - changed_line_abv_curs(); - // Also need to redraw the other buffers. diff_redraw(FALSE); apply_autocmds(EVENT_DIFFUPDATED, NULL, NULL, FALSE, curbuf);
--- a/src/testdir/test_diffmode.vim +++ b/src/testdir/test_diffmode.vim @@ -277,6 +277,28 @@ func Test_dp_do_buffer() %bwipe! endfunc +func Test_do_lastline() + e! one + call setline(1, ['1','2','3','4','5','6']) + diffthis + + new two + call setline(1, ['2','4','5']) + diffthis + + 1 + norm dp]c + norm dp]c + wincmd w + call assert_equal(4, line('$')) + norm G + norm do + call assert_equal(3, line('$')) + + windo diffoff + %bwipe! +endfunc + func Test_diffoff() enew! call setline(1, ['Two', 'Three'])