changeset 28429:aa9720c76412 v8.2.4739

patch 8.2.4739: accessing freed memory after WinScrolled autocmd event Commit: https://github.com/vim/vim/commit/d58862d18f091d3c14fa3647e724ef7eea1ecefa Author: zeertzjq <zeertzjq@outlook.com> Date: Tue Apr 12 11:32:48 2022 +0100 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 https://github.com/vim/vim/issues/10156) Remove the argument from may_trigger_winscrolled().
author Bram Moolenaar <Bram@vim.org>
date Tue, 12 Apr 2022 12:45:04 +0200
parents eb08141a60cb
children 957dde5a4688
files src/edit.c src/gui.c src/main.c src/proto/window.pro src/testdir/test_autocmd.vim src/version.c src/window.c
diffstat 7 files changed, 20 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/edit.c
+++ b/src/edit.c
@@ -1528,7 +1528,7 @@ ins_redraw(int ready)	    // not busy wi
     }
 
     if (ready)
-	may_trigger_winscrolled(curwin);
+	may_trigger_winscrolled();
 
     // Trigger SafeState if nothing is pending.
     may_trigger_safestate(ready
--- a/src/gui.c
+++ b/src/gui.c
@@ -5238,7 +5238,7 @@ gui_update_screen(void)
     }
 
     if (!finish_op)
-	may_trigger_winscrolled(curwin);
+	may_trigger_winscrolled();
 
 # ifdef FEAT_CONCEAL
     if (conceal_update_lines
--- a/src/main.c
+++ b/src/main.c
@@ -1342,7 +1342,7 @@ main_loop(
 	    validate_cursor();
 
 	    if (!finish_op)
-		may_trigger_winscrolled(curwin);
+		may_trigger_winscrolled();
 
 	    // If nothing is pending and we are going to wait for the user to
 	    // type a character, trigger SafeState.
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -17,7 +17,7 @@ void curwin_init(void);
 void close_windows(buf_T *buf, int keep_curwin);
 int one_window(void);
 int win_close(win_T *win, int free_buf);
-void may_trigger_winscrolled(win_T *wp);
+void may_trigger_winscrolled(void);
 void win_close_othertab(win_T *win, int free_buf, tabpage_T *tp);
 void win_free_all(void);
 win_T *winframe_remove(win_T *win, int *dirp, tabpage_T *tp);
index 9af79d8e1ba31ed2dbbff3b379ce8c0e16f4c54c..724d0733fc958f73c93734e6d132b730c2aa55ce
GIT binary patch
literal 93670
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
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4739,
+/**/
     4738,
 /**/
     4737,
--- 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;
+	}
     }
 }