# HG changeset patch # User Bram Moolenaar # Date 1573156805 -3600 # Node ID 4fbfecbb968cf990066c5d7304266a07e0c7528e # Parent 2602ebaedfda3e3f83ecfeffdd0bc3bdc57cb1ff patch 8.1.2268: spell file flag zero is not recognized Commit: https://github.com/vim/vim/commit/3d2a47c7823b934e1a85d773b68758c87c3ddc90 Author: Bram Moolenaar Date: Thu Nov 7 20:48:42 2019 +0100 patch 8.1.2268: spell file flag zero is not recognized Problem: Spell file flag zero is not recognized. Solution: Use -1 as an error value, so that zero can be used as a valid flag number. diff --git a/src/spellfile.c b/src/spellfile.c --- a/src/spellfile.c +++ b/src/spellfile.c @@ -260,6 +260,8 @@ * follow; never used in prefix tree */ #define BY_SPECIAL BY_FLAGS2 /* highest special byte value */ +#define ZERO_FLAG 65009 // used when flag is zero: "0" + /* Flags used in .spl file for soundsalike flags. */ #define SAL_F0LLOWUP 1 #define SAL_COLLAPSE 2 @@ -3182,6 +3184,7 @@ affitem2flag( /* * Get one affix name from "*pp" and advance the pointer. + * Returns ZERO_FLAG for "0". * Returns zero for an error, still advances the pointer then. */ static unsigned @@ -3197,6 +3200,8 @@ get_affitem(int flagtype, char_u **pp) return 0; } res = getdigits(pp); + if (res == 0) + res = ZERO_FLAG; } else { @@ -3343,6 +3348,8 @@ flag_in_afflist(int flagtype, char_u *af for (p = afflist; *p != NUL; ) { n = getdigits(&p); + if (n == 0) + n = ZERO_FLAG; if (n == flag) return TRUE; if (*p != NUL) /* skip over comma */ diff --git a/src/testdir/test_spell.vim b/src/testdir/test_spell.vim --- a/src/testdir/test_spell.vim +++ b/src/testdir/test_spell.vim @@ -290,9 +290,9 @@ func Test_zz_affix() \ ]) call LoadAffAndDic(g:test_data_aff7, g:test_data_dic7) - call RunGoodBad("meea1 meea\xE9 bar prebar barmeat prebarmeat leadprebar lead tail leadtail leadmiddletail", + call RunGoodBad("meea1 meezero meea\xE9 bar prebar barmeat prebarmeat leadprebar lead tail leadtail leadmiddletail", \ "bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead leadprobar", - \ ["bar", "barmeat", "lead", "meea1", "meea\xE9", "prebar", "prebarmeat", "tail"], + \ ["bar", "barmeat", "lead", "meea1", "meea\xE9", "meezero", "prebar", "prebarmeat", "tail"], \ [ \ ["bad", ["bar", "lead", "tail"]], \ ["mee", ["meea1", "meea\xE9", "bar"]], @@ -746,6 +746,9 @@ let g:test_data_aff7 = [ \"SFX 61003 Y 1", \"SFX 61003 0 meat .", \"", + \"SFX 0 Y 1", + \"SFX 0 0 zero .", + \"", \"SFX 391 Y 1", \"SFX 391 0 a1 .", \"", @@ -757,7 +760,7 @@ let g:test_data_aff7 = [ \ ] let g:test_data_dic7 = [ \"1234", - \"mee/391,111,9999", + \"mee/0,391,111,9999", \"bar/17,61003,123", \"lead/2", \"tail/123", diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2268, +/**/ 2267, /**/ 2266,