forked from aniani/vim
patch 9.0.1362: ml_get error when going to another tab
Problem: ml_get error when going to another tab. (Daniel J. Perry) Solution: Do not call update_topline() if "curwin" is invalid. (closes #11907)
This commit is contained in:
@@ -872,4 +872,19 @@ func Test_tabpage_alloc_failure()
|
|||||||
call assert_equal(1, tabpagenr('$'))
|
call assert_equal(1, tabpagenr('$'))
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" this was giving ml_get errors
|
||||||
|
func Test_tabpage_last_line()
|
||||||
|
enew
|
||||||
|
call setline(1, repeat(['a'], &lines + 5))
|
||||||
|
$
|
||||||
|
tabnew
|
||||||
|
call setline(1, repeat(['b'], &lines + 20))
|
||||||
|
$
|
||||||
|
tabNext
|
||||||
|
call assert_equal('a', getline('.'))
|
||||||
|
|
||||||
|
bwipe!
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -695,6 +695,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 */
|
||||||
|
/**/
|
||||||
|
1362,
|
||||||
/**/
|
/**/
|
||||||
1361,
|
1361,
|
||||||
/**/
|
/**/
|
||||||
|
10
src/window.c
10
src/window.c
@@ -5273,15 +5273,15 @@ win_enter_ext(win_T *wp, int flags)
|
|||||||
int curwin_invalid = (flags & WEE_CURWIN_INVALID);
|
int curwin_invalid = (flags & WEE_CURWIN_INVALID);
|
||||||
int did_decrement = FALSE;
|
int did_decrement = FALSE;
|
||||||
|
|
||||||
if (wp == curwin && !curwin_invalid) // nothing to do
|
if (wp == curwin && curwin_invalid == 0) // nothing to do
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
#ifdef FEAT_JOB_CHANNEL
|
#ifdef FEAT_JOB_CHANNEL
|
||||||
if (!curwin_invalid)
|
if (curwin_invalid == 0)
|
||||||
leaving_window(curwin);
|
leaving_window(curwin);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!curwin_invalid && (flags & WEE_TRIGGER_LEAVE_AUTOCMDS))
|
if (curwin_invalid == 0 && (flags & WEE_TRIGGER_LEAVE_AUTOCMDS))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Be careful: If autocommands delete the window, return now.
|
* Be careful: If autocommands delete the window, return now.
|
||||||
@@ -5309,13 +5309,13 @@ win_enter_ext(win_T *wp, int flags)
|
|||||||
|
|
||||||
// Might need to scroll the old window before switching, e.g., when the
|
// Might need to scroll the old window before switching, e.g., when the
|
||||||
// cursor was moved.
|
// cursor was moved.
|
||||||
if (*p_spk == 'c')
|
if (*p_spk == 'c' && curwin_invalid == 0)
|
||||||
update_topline();
|
update_topline();
|
||||||
|
|
||||||
// may have to copy the buffer options when 'cpo' contains 'S'
|
// may have to copy the buffer options when 'cpo' contains 'S'
|
||||||
if (wp->w_buffer != curbuf)
|
if (wp->w_buffer != curbuf)
|
||||||
buf_copy_options(wp->w_buffer, BCO_ENTER | BCO_NOHELP);
|
buf_copy_options(wp->w_buffer, BCO_ENTER | BCO_NOHELP);
|
||||||
if (!curwin_invalid)
|
if (curwin_invalid == 0)
|
||||||
{
|
{
|
||||||
prevwin = curwin; // remember for CTRL-W p
|
prevwin = curwin; // remember for CTRL-W p
|
||||||
curwin->w_redr_status = TRUE;
|
curwin->w_redr_status = TRUE;
|
||||||
|
Reference in New Issue
Block a user