0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.4739: accessing freed memory after WinScrolled autocmd event

Problem:    Accessing freed memory after WinScrolled autocmd event.
Solution:   Check the window pointer is still valid. (closes #10156)
            Remove the argument from may_trigger_winscrolled().
This commit is contained in:
zeertzjq
2022-04-12 11:32:48 +01:00
committed by Bram Moolenaar
parent 11a57dfd16
commit d58862d18f
7 changed files with 54 additions and 20 deletions

View File

@@ -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;
}
}
}