57 lines
1.7 KiB
Diff
57 lines
1.7 KiB
Diff
From 6669de1b235843968e88844ca6d3c8dec4b01a9e Mon Sep 17 00:00:00 2001
|
|
From: Bram Moolenaar <Bram@vim.org>
|
|
Date: Sun, 21 Aug 2022 20:33:47 +0100
|
|
Subject: [PATCH] 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.
|
|
---
|
|
src/spellfile.c | 4 +++-
|
|
src/testdir/test_spellfile.vim | 12 ++++++++++++
|
|
2 files changed, 15 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/spellfile.c b/src/spellfile.c
|
|
index 4a0de52..a4407fa 100644
|
|
--- a/src/spellfile.c
|
|
+++ b/src/spellfile.c
|
|
@@ -5585,10 +5585,12 @@ sug_filltree(spellinfo_T *spin, slang_T *slang)
|
|
|
|
/*
|
|
* 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;
|
|
diff --git a/src/testdir/test_spellfile.vim b/src/testdir/test_spellfile.vim
|
|
index 38d1ec0..e81aa65 100644
|
|
--- a/src/testdir/test_spellfile.vim
|
|
+++ b/src/testdir/test_spellfile.vim
|
|
@@ -1160,4 +1160,16 @@ func Test_mkspellmem_opt()
|
|
call assert_fails('set mkspellmem=1000,50,0', 'E474:')
|
|
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
|
|
--
|
|
2.36.1
|
|
|