updated for version 7.4a.044
Problem:    Test 96 sometimes fails.
Solution:   Clear window from b_wininfo in win_free().  (Suggestion by
            Yukihiro Nakadaira)
diff --git a/src/window.c b/src/window.c
index d1c1e93..16e0ee7 100644
--- a/src/window.c
+++ b/src/window.c
@@ -4518,7 +4518,7 @@
 #if defined(FEAT_WINDOWS) || defined(PROTO)
 
 /*
- * remove window 'wp' from the window list and free the structure
+ * Remove window 'wp' from the window list and free the structure.
  */
     static void
 win_free(wp, tp)
@@ -4526,6 +4526,8 @@
     tabpage_T	*tp;		/* tab page "win" is in, NULL for current */
 {
     int		i;
+    buf_T	*buf;
+    wininfo_T	*wip;
 
 #ifdef FEAT_FOLDING
     clearFolding(wp);
@@ -4586,6 +4588,13 @@
 
     vim_free(wp->w_localdir);
 
+    /* Remove the window from the b_wininfo lists, it may happen that the
+     * freed memory is re-used for another window. */
+    for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+	for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
+	    if (wip->wi_win == wp)
+		wip->wi_win = NULL;
+
 #ifdef FEAT_SEARCH_EXTRA
     clear_matches(wp);
 #endif