diff src/spellfile.c @ 18548:4fbfecbb968c v8.1.2268

patch 8.1.2268: spell file flag zero is not recognized Commit: https://github.com/vim/vim/commit/3d2a47c7823b934e1a85d773b68758c87c3ddc90 Author: Bram Moolenaar <Bram@vim.org> 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.
author Bram Moolenaar <Bram@vim.org>
date Thu, 07 Nov 2019 21:00:05 +0100
parents 3dbff5d37520
children 7e7ec935e7c8
line wrap: on
line diff
--- 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 */