diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-11-07 23:00:27 -0500 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-11-09 09:58:32 -0500 |
commit | 805a577f71f385c783e5ae7604aac41f650c2de6 (patch) | |
tree | b320cfb62928166b5b12985cc51ca0aad845a1b1 /src/nvim/spellfile.c | |
parent | 3e2f7baf2138c204a9d94e2dc2cae7900b0b6122 (diff) | |
download | rneovim-805a577f71f385c783e5ae7604aac41f650c2de6.tar.gz rneovim-805a577f71f385c783e5ae7604aac41f650c2de6.tar.bz2 rneovim-805a577f71f385c783e5ae7604aac41f650c2de6.zip |
vim-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.
https://github.com/vim/vim/commit/3d2a47c7823b934e1a85d773b68758c87c3ddc90
Diffstat (limited to 'src/nvim/spellfile.c')
-rw-r--r-- | src/nvim/spellfile.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/nvim/spellfile.c b/src/nvim/spellfile.c index eeec5be120..4fac001bc5 100644 --- a/src/nvim/spellfile.c +++ b/src/nvim/spellfile.c @@ -265,6 +265,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 @@ -2783,6 +2785,7 @@ static unsigned affitem2flag(int flagtype, char_u *item, char_u *fname, int lnum } // 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 get_affitem(int flagtype, char_u **pp) { @@ -2794,6 +2797,9 @@ static unsigned get_affitem(int flagtype, char_u **pp) return 0; } res = getdigits_int(pp, true, 0); + if (res == 0) { + res = ZERO_FLAG; + } } else { res = mb_ptr2char_adv((const char_u **)pp); if (flagtype == AFT_LONG || (flagtype == AFT_CAPLONG @@ -2915,10 +2921,15 @@ static bool flag_in_afflist(int flagtype, char_u *afflist, unsigned flag) int digits = getdigits_int(&p, true, 0); assert(digits >= 0); n = (unsigned int)digits; - if (n == flag) + if (n == 0) { + n = ZERO_FLAG; + } + if (n == flag) { return true; - if (*p != NUL) // skip over comma - ++p; + } + if (*p != NUL) { // skip over comma + p++; + } } break; } |