patch 9.1.0783: 'spell' option setting has problems
Problem: 'spell' option setting has problems
Solution: correctly check for comma for 'spellfile' option,
remove unnecessary checks, refactor slightly (Milly)
closes: #15873
Signed-off-by: Milly <milly.ca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/spell.c b/src/spell.c
index 909d426..5a7720f 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -2250,7 +2250,7 @@
else
{
// One entry in 'spellfile'.
- copy_option_part(&spf, spf_name, MAXPATHL - 5, ",");
+ copy_option_part(&spf, spf_name, MAXPATHL - 4, ",");
STRCAT(spf_name, ".spl");
// If it was already found above then skip it.
@@ -4441,11 +4441,22 @@
int
valid_spellfile(char_u *val)
{
- char_u *s;
+ char_u spf_name[MAXPATHL];
+ char_u *spf;
+ char_u *s;
+ int l;
- for (s = val; *s != NUL; ++s)
- if (!vim_is_fname_char(*s))
+ spf = val;
+ while (*spf != NUL)
+ {
+ l = copy_option_part(&spf, spf_name, MAXPATHL, ",");
+ if (l >= MAXPATHL - 4 || l < 4
+ || STRCMP(spf_name + l - 4, ".add") != 0)
return FALSE;
+ for (s = spf_name; *s != NUL; ++s)
+ if (!vim_is_fname_char(*s))
+ return FALSE;
+ }
return TRUE;
}
@@ -4454,22 +4465,10 @@
* Return an error message or NULL for success.
*/
char *
-did_set_spell_option(int is_spellfile)
+did_set_spell_option(void)
{
char *errmsg = NULL;
win_T *wp;
- int l;
-
- if (is_spellfile)
- {
- l = (int)STRLEN(curwin->w_s->b_p_spf);
- if (l > 0 && (l < 4
- || STRCMP(curwin->w_s->b_p_spf + l - 4, ".add") != 0))
- errmsg = e_invalid_argument;
- }
-
- if (errmsg != NULL)
- return errmsg;
FOR_ALL_WINDOWS(wp)
if (wp->w_buffer == curbuf && wp->w_p_spell)