summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-09-13 22:37:34 +0200
committerBram Moolenaar <Bram@vim.org>2020-09-13 22:37:34 +0200
commitd1f76afaf963be706697279ab0570ffcb8a1f2fc (patch)
tree532a79e2835b838c2353f624e1ab1dba311c2f5d
parent4d170af0a9379da64d67dc3fa7cc7297956c6f52 (diff)
patch 8.2.1678: crash when using ":set" after ":ownsyntax"v8.2.1678
Problem: Crash when using ":set" after ":ownsyntax". Solution: Make sure 'spelloptions' is not NULL. (closes #6950)
-rw-r--r--src/syntax.c2
-rw-r--r--src/testdir/test_syntax.vim4
-rw-r--r--src/version.c2
3 files changed, 8 insertions, 0 deletions
diff --git a/src/syntax.c b/src/syntax.c
index ccdb2030cc..6025889b20 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -6316,9 +6316,11 @@ ex_ownsyntax(exarg_T *eap)
#ifdef FEAT_SPELL
// TODO: keep the spell checking as it was.
curwin->w_p_spell = FALSE; // No spell checking
+ // make sure option values are "empty_option" instead of NULL
clear_string_option(&curwin->w_s->b_p_spc);
clear_string_option(&curwin->w_s->b_p_spf);
clear_string_option(&curwin->w_s->b_p_spl);
+ clear_string_option(&curwin->w_s->b_p_spo);
#endif
clear_string_option(&curwin->w_s->b_syn_isk);
}
diff --git a/src/testdir/test_syntax.vim b/src/testdir/test_syntax.vim
index cd06892733..8a021851f3 100644
--- a/src/testdir/test_syntax.vim
+++ b/src/testdir/test_syntax.vim
@@ -428,7 +428,11 @@ func Test_ownsyntax()
call setline(1, '#define FOO')
syntax on
set filetype=c
+
ownsyntax perl
+ " this should not crash
+ set
+
call assert_equal('perlComment', synIDattr(synID(line('.'), col('.'), 1), 'name'))
call assert_equal('c', b:current_syntax)
call assert_equal('perl', w:current_syntax)
diff --git a/src/version.c b/src/version.c
index 0d0ea4dd84..a59b82dd85 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1678,
+/**/
1677,
/**/
1676,