vim-patch:9.0.0240: crash when using ":mkspell" with an empty .dic file

Problem:    Crash when using ":mkspell" with an empty .dic file.
Solution:   Check for an empty word tree.

6669de1b23

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq 2023-05-04 13:49:19 +08:00
parent 7e70a1e44b
commit 7ddf235d7e
2 changed files with 16 additions and 1 deletions

View File

@ -4971,9 +4971,12 @@ static int sug_filltree(spellinfo_T *spin, slang_T *slang)
spin->si_sugtree = true;
// Go through the whole case-folded tree, soundfold each word and put it
// in the trie.
// in the trie. Bail out if the tree is empty.
byts = slang->sl_fbyts;
idxs = slang->sl_fidxs;
if (byts == NULL || idxs == NULL) {
return FAIL;
}
arridx[0] = 0;
curi[0] = 1;

View File

@ -1071,4 +1071,16 @@ func Test_spellfile_allow_at_character()
call delete('Xtest', 'rf')
endfunc
" this was using a NULL pointer
func Test_mkspell_empty_dic()
call writefile(['1'], 'XtestEmpty.dic')
call writefile(['SOFOFROM abcd', 'SOFOTO ABCD', 'SAL CIA X'], 'XtestEmpty.aff')
mkspell! XtestEmpty.spl XtestEmpty
call delete('XtestEmpty.dic')
call delete('XtestEmpty.aff')
call delete('XtestEmpty.spl')
endfunc
" vim: shiftwidth=2 sts=2 expandtab