mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	vim-patch:9.1.0216: Error on exit with EXITFREE and 'winfixbuf' (#28070)
Problem:  Error on exit with EXITFREE and 'winfixbuf'.
Solution: Handle DT_FREE before checking for 'winfixbuf'.
          (zeertzjq)
closes: vim/vim#14314
620e85265c
			
			
This commit is contained in:
		@@ -290,10 +290,6 @@ void set_buflocal_tfu_callback(buf_T *buf)
 | 
			
		||||
/// @param verbose  print "tag not found" message
 | 
			
		||||
void do_tag(char *tag, int type, int count, int forceit, bool verbose)
 | 
			
		||||
{
 | 
			
		||||
  if (postponed_split == 0 && !check_can_set_curbuf_forceit(forceit)) {
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  taggy_T *tagstack = curwin->w_tagstack;
 | 
			
		||||
  int tagstackidx = curwin->w_tagstackidx;
 | 
			
		||||
  int tagstacklen = curwin->w_tagstacklen;
 | 
			
		||||
@@ -320,11 +316,6 @@ void do_tag(char *tag, int type, int count, int forceit, bool verbose)
 | 
			
		||||
  static char **matches = NULL;
 | 
			
		||||
  static int flags;
 | 
			
		||||
 | 
			
		||||
  if (tfu_in_use) {
 | 
			
		||||
    emsg(_(e_cannot_modify_tag_stack_within_tagfunc));
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
#ifdef EXITFREE
 | 
			
		||||
  if (type == DT_FREE) {
 | 
			
		||||
    // remove the list of matches
 | 
			
		||||
@@ -334,6 +325,15 @@ void do_tag(char *tag, int type, int count, int forceit, bool verbose)
 | 
			
		||||
  }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  if (tfu_in_use) {
 | 
			
		||||
    emsg(_(e_cannot_modify_tag_stack_within_tagfunc));
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (postponed_split == 0 && !check_can_set_curbuf_forceit(forceit)) {
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (type == DT_HELP) {
 | 
			
		||||
    type = DT_TAG;
 | 
			
		||||
    no_regexp = true;
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user