vim-patch:8.2.1770: invalid memory use when using SpellFileMissing autocmd

Problem:    Invalid memory use when using SpellFileMissing autocmd.
Solution:   Add test case. (Dominique Pellé, closes vim/vim#7036)  Fix using a window
            that was closed.
d569a9e746

Skip an assert because of #3027.
This commit is contained in:
zeertzjq
2022-07-04 09:21:19 +08:00
parent 7648a8524c
commit 1ff86aa634
2 changed files with 25 additions and 1 deletions

View File

@@ -2327,11 +2327,11 @@ char *did_set_spelllang(win_T *wp)
} }
} }
} }
redraw_later(wp, NOT_VALID);
theend: theend:
xfree(spl_copy); xfree(spl_copy);
recursive = false; recursive = false;
redraw_later(wp, NOT_VALID);
return ret_msg; return ret_msg;
} }

View File

@@ -131,6 +131,30 @@ foobar/?
set spell& set spell&
endfunc endfunc
func Test_spell_file_missing()
let s:spell_file_missing = 0
augroup TestSpellFileMissing
autocmd! SpellFileMissing * let s:spell_file_missing += 1
augroup END
set spell spelllang=ab_cd
let messages = GetMessages()
" This message is not shown in Nvim because of #3027
" call assert_equal('Warning: Cannot find word list "ab.utf-8.spl" or "ab.ascii.spl"', messages[-1])
call assert_equal(1, s:spell_file_missing)
new XTestSpellFileMissing
augroup TestSpellFileMissing
autocmd! SpellFileMissing * bwipe
augroup END
call assert_fails('set spell spelllang=ab_cd', 'E797:')
augroup! TestSpellFileMissing
unlet s:spell_file_missing
set spell& spelllang&
%bwipe!
endfunc
func Test_spelllang_inv_region() func Test_spelllang_inv_region()
set spell spelllang=en_xx set spell spelllang=en_xx
let messages = GetMessages() let messages = GetMessages()