diff options
Diffstat (limited to 'src/window.c')
-rw-r--r-- | src/window.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/window.c b/src/window.c index 1eab3dcce..c9526a1d6 100644 --- a/src/window.c +++ b/src/window.c @@ -2784,9 +2784,13 @@ trigger_winclosed(win_T *win) recursive = FALSE; } +/* + * Trigger WinScrolled for "curwin" if needed. + */ void -may_trigger_winscrolled(win_T *wp) +may_trigger_winscrolled(void) { + win_T *wp = curwin; static int recursive = FALSE; char_u winid[NUMBUFLEN]; @@ -2804,10 +2808,14 @@ may_trigger_winscrolled(win_T *wp) apply_autocmds(EVENT_WINSCROLLED, winid, winid, FALSE, wp->w_buffer); recursive = FALSE; - wp->w_last_topline = wp->w_topline; - wp->w_last_leftcol = wp->w_leftcol; - wp->w_last_width = wp->w_width; - wp->w_last_height = wp->w_height; + // an autocmd may close the window, "wp" may be invalid now + if (win_valid_any_tab(wp)) + { + wp->w_last_topline = wp->w_topline; + wp->w_last_leftcol = wp->w_leftcol; + wp->w_last_width = wp->w_width; + wp->w_last_height = wp->w_height; + } } } |