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 #7036) Fix using a window
that was closed.
diff --git a/src/spell.c b/src/spell.c
index 6b431fa..085f317 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -2280,11 +2280,11 @@
}
}
}
+ redraw_win_later(wp, NOT_VALID);
theend:
vim_free(spl_copy);
recursive = FALSE;
- redraw_win_later(wp, NOT_VALID);
return ret_msg;
}
diff --git a/src/testdir/test_spell.vim b/src/testdir/test_spell.vim
index db40cd2..dd68e0c 100644
--- a/src/testdir/test_spell.vim
+++ b/src/testdir/test_spell.vim
@@ -120,6 +120,29 @@
set spell&
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()
+ 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()
set spell spelllang=en_xx
let messages = GetMessages()
diff --git a/src/version.c b/src/version.c
index 3d37c85..26e63c2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1770,
+/**/
1769,
/**/
1768,