diff src/term.c @ 3068:0787bb5f387b v7.3.306

updated for version 7.3.306 Problem: When closing a window there is a chance that deleting a scrollbar triggers a GUI resize, which uses the window while it is not in a valid state. Solution: Set the buffer pointer to NULL to be able to detect the invalid situation. Fix a few places that used the buffer pointer incorrectly.
author Bram Moolenaar <bram@vim.org>
date Wed, 14 Sep 2011 14:43:25 +0200
parents 8bd38abda314
children 12bb368fef2c
line wrap: on
line diff
--- a/src/term.c
+++ b/src/term.c
@@ -3017,12 +3017,20 @@ set_shellsize(width, height, mustset)
     if (width < 0 || height < 0)    /* just checking... */
 	return;
 
-    if (State == HITRETURN || State == SETWSIZE) /* postpone the resizing */
+    if (State == HITRETURN || State == SETWSIZE)
     {
+	/* postpone the resizing */
 	State = SETWSIZE;
 	return;
     }
 
+    /* curwin->w_buffer can be NULL when we are closing a window and the
+     * buffer has already been closed and removing a scrollbar causes a resize
+     * event. Don't resize then, it will happen after entering another buffer.
+     */
+    if (curwin->w_buffer == NULL)
+	return;
+
     ++busy;
 
 #ifdef AMIGA