]> git.ipfire.org Git - thirdparty/vim.git/commit
patch 9.1.0159: Crash in WinClosed after BufUnload closes other windows v9.1.0159
authorzeertzjq <zeertzjq@outlook.com>
Sat, 9 Mar 2024 14:39:27 +0000 (15:39 +0100)
committerChristian Brabandt <cb@256bit.org>
Sat, 9 Mar 2024 14:39:27 +0000 (15:39 +0100)
commitb2ec0da080fb24f12a8d6f54bd7318a078ca4e6c
tree63cd179682ebabe10dffe4103435df762ed01f36
parent8a01744c563f615ae7f6b3ab7f5208214a45a8e2
patch 9.1.0159: Crash in WinClosed after BufUnload closes other windows

Problem:  Crash in WinClosed after BufUnload closes other windows
Solution: Don't trigger WinClosed if the buffer is NULL (zeertzjq)

Now win_close_othertab() doesn't trigger any autocommands if the buffer
is NULL, so remove the autocmd blocking above (which was added not long
ago in patch v9.0.0550) for consistency.

Also remove an unreachable close_last_window_tabpage() above:
- It is only reached if only_one_window() returns TRUE and last_window()
  returns FALSE.
- If only_one_window() returns TRUE, there is only one tabpage.
- If there is only one tabpage and last_window() returns FALSE, the
  one_window() in last_window() must return FALSE, and the ONE_WINDOW
  in close_last_window_tabpage() must also be FALSE.
- So close_last_window_tabpage() doesn't do anything and returns FALSE.

Then the curtab != prev_curtab check also doesn't make much sense, and
the only_one_window() can be replaced with a check for popup and a call
to last_window() since this is a stricter check than only_one_window().

closes: #14166

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/testdir/test_autocmd.vim
src/version.c
src/window.c