Mercurial > vim
changeset 29802:be40495e9cd8 v9.0.0240
patch 9.0.0240: crash when using ":mkspell" with an empty .dic file
Commit: https://github.com/vim/vim/commit/6669de1b235843968e88844ca6d3c8dec4b01a9e
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Aug 21 20:33:47 2022 +0100
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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 21 Aug 2022 21:45:03 +0200 |
parents | ac6f7c97adef |
children | 208b5f6dee21 |
files | src/spellfile.c src/testdir/test_spellfile.vim src/version.c |
diffstat | 3 files changed, 17 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/spellfile.c +++ b/src/spellfile.c @@ -5585,10 +5585,12 @@ sug_filltree(spellinfo_T *spin, slang_T /* * 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;
--- a/src/testdir/test_spellfile.vim +++ b/src/testdir/test_spellfile.vim @@ -1168,4 +1168,16 @@ def Test_spellfile_allow_at_character() delete('Xtest', 'rf') enddef +" 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