mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
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)
This commit is contained in:
parent
0cc7b2d6cc
commit
df77cef92e
19
src/diff.c
19
src/diff.c
@ -2848,18 +2848,19 @@ ex_diffgetput(exarg_T *eap)
|
|||||||
theend:
|
theend:
|
||||||
diff_busy = FALSE;
|
diff_busy = FALSE;
|
||||||
if (diff_need_update)
|
if (diff_need_update)
|
||||||
{
|
|
||||||
diff_need_update = FALSE;
|
|
||||||
ex_diffupdate(NULL);
|
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;
|
||||||
else
|
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.
|
// Also need to redraw the other buffers.
|
||||||
diff_redraw(FALSE);
|
diff_redraw(FALSE);
|
||||||
apply_autocmds(EVENT_DIFFUPDATED, NULL, NULL, FALSE, curbuf);
|
apply_autocmds(EVENT_DIFFUPDATED, NULL, NULL, FALSE, curbuf);
|
||||||
|
@ -277,6 +277,28 @@ func Test_dp_do_buffer()
|
|||||||
%bwipe!
|
%bwipe!
|
||||||
endfunc
|
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()
|
func Test_diffoff()
|
||||||
enew!
|
enew!
|
||||||
call setline(1, ['Two', 'Three'])
|
call setline(1, ['Two', 'Three'])
|
||||||
|
@ -792,6 +792,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
458,
|
||||||
/**/
|
/**/
|
||||||
457,
|
457,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user