summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-03-28 10:11:57 +0100
committerChristian Brabandt <cb@256bit.org>2024-03-28 10:11:57 +0100
commit620e85265ce04654053c64f8058914ecafe4eb38 (patch)
tree2c373a108c77e887a655e6c94f3086de42fa8bc7
parent5a2e3ec9ac72b6e644fea4ebba7e632498296e2f (diff)
patch 9.1.0216: Error on exit with EXITFREE and 'winfixbuf'v9.1.0216
Problem: Error on exit with EXITFREE and 'winfixbuf'. Solution: Handle DT_FREE before checking for 'winfixbuf'. (zeertzjq) closes: #14314 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
-rw-r--r--src/tag.c22
-rw-r--r--src/testdir/test_winfixbuf.vim12
-rw-r--r--src/version.c2
3 files changed, 25 insertions, 11 deletions
diff --git a/src/tag.c b/src/tag.c
index 2ac0da2666..9117d0fd27 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -289,17 +289,6 @@ do_tag(
static char_u **matches = NULL;
static int flags;
- if (postponed_split == 0 && !check_can_set_curbuf_forceit(forceit))
- return FALSE;
-
-#ifdef FEAT_EVAL
- if (tfu_in_use)
- {
- emsg(_(e_cannot_modify_tag_stack_within_tagfunc));
- return FALSE;
- }
-#endif
-
#ifdef EXITFREE
if (type == DT_FREE)
{
@@ -313,6 +302,17 @@ do_tag(
}
#endif
+#ifdef FEAT_EVAL
+ if (tfu_in_use)
+ {
+ emsg(_(e_cannot_modify_tag_stack_within_tagfunc));
+ return FALSE;
+ }
+#endif
+
+ if (postponed_split == 0 && !check_can_set_curbuf_forceit(forceit))
+ return FALSE;
+
if (type == DT_HELP)
{
type = DT_TAG;
diff --git a/src/testdir/test_winfixbuf.vim b/src/testdir/test_winfixbuf.vim
index 610e8e0bc7..edf71f0e6e 100644
--- a/src/testdir/test_winfixbuf.vim
+++ b/src/testdir/test_winfixbuf.vim
@@ -1,6 +1,7 @@
" Test 'winfixbuf'
source check.vim
+source shared.vim
" Find the number of open windows in the current tab
func s:get_windows_count()
@@ -3427,4 +3428,15 @@ func Test_bufdo_cnext_splitwin_fails()
set winminheight&vim winheight&vim
endfunc
+" Test that exiting with 'winfixbuf' and EXITFREE doesn't cause an error.
+func Test_exitfree_no_error()
+ let lines =<< trim END
+ set winfixbuf
+ qall!
+ END
+ call writefile(lines, 'Xwfb_exitfree', 'D')
+ call assert_notmatch('E1513:',
+ \ system(GetVimCommandClean() .. ' -X -S Xwfb_exitfree'))
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 46dd27331a..3067d75f94 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 216,
+/**/
215,
/**/
214,