summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-11-07 20:48:42 +0100
committerBram Moolenaar <Bram@vim.org>2019-11-07 20:48:42 +0100
commit3d2a47c7823b934e1a85d773b68758c87c3ddc90 (patch)
tree54b3cbccf57dc11d61d01b9ca18cd1cf21eb593c
parent3b991527e8167f25ad1dfe780b9633c153600955 (diff)
patch 8.1.2268: spell file flag zero is not recognizedv8.1.2268
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.
-rw-r--r--src/spellfile.c7
-rw-r--r--src/testdir/test_spell.vim9
-rw-r--r--src/version.c2
3 files changed, 15 insertions, 3 deletions
diff --git a/src/spellfile.c b/src/spellfile.c
index f34d9badbe..4b364421d4 100644
--- 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 *afflist, unsigned flag)
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
index 146e421d03..c3b2d4409a 100644
--- 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
index 3cc98798c2..2db75aa6e0 100644
--- 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,