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:
18
src/window.c
18
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user