diff options
author | Bram Moolenaar <Bram@vim.org> | 2013-07-24 17:51:57 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2013-07-24 17:51:57 +0200 |
commit | ff18df03c3b714caca4f76e50defcb29eb523e15 (patch) | |
tree | 4039c827e9973117ea6f8c9c4a5007ae28f2a21f /src | |
parent | af003f638415d20ee72cf137e47da38029c627db (diff) | |
download | vim-ff18df03c3b714caca4f76e50defcb29eb523e15.zip |
updated for version 7.4a.044
Problem: Test 96 sometimes fails.
Solution: Clear window from b_wininfo in win_free(). (Suggestion by
Yukihiro Nakadaira)
Diffstat (limited to 'src')
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/window.c | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/version.c b/src/version.c index 946a3cfc8..43ad9dd6f 100644 --- a/src/version.c +++ b/src/version.c @@ -728,6 +728,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 44, +/**/ 43, /**/ 42, diff --git a/src/window.c b/src/window.c index d1c1e93d9..16e0ee78b 100644 --- a/src/window.c +++ b/src/window.c @@ -4518,7 +4518,7 @@ win_alloc(after, hidden) #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 @@ win_free(wp, tp) 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 @@ win_free(wp, tp) 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 |