changeset 13232:d11bbd3440b0 v8.0.1490

patch 8.0.1490: number of spell regions is spread out through the code commit https://github.com/vim/vim/commit/2993ac5fce5450428322ce43aaa5e643e6994443 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Feb 10 14:12:43 2018 +0100 patch 8.0.1490: number of spell regions is spread out through the code Problem: Number of spell regions is spread out through the code. Solution: Define MAXREGIONS.
author Christian Brabandt <cb@256bit.org>
date Sat, 10 Feb 2018 14:15:05 +0100
parents 167a030448fa
children eaa9d3821fb0
files src/spell.h src/spellfile.c src/version.c
diffstat 3 files changed, 16 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/spell.h
+++ b/src/spell.h
@@ -34,6 +34,8 @@
 				   byte, thus it can't be above 255.
 				   Must be >= PFD_NOTSPECIAL. */
 
+#define MAXREGIONS 8		/* Number of regions supported. */
+
 /* Type used for indexes in the word tree need to be at least 4 bytes.  If int
  * is 8 bytes we could use something smaller, but what? */
 #if VIM_SIZEOF_INT > 3
@@ -80,7 +82,8 @@ struct slang_S
 
     char_u	*sl_info;	/* infotext string or NULL */
 
-    char_u	sl_regions[17];	/* table with up to 8 region names plus NUL */
+    char_u	sl_regions[MAXREGIONS * 2 + 1];
+				/* table with up to 8 region names plus NUL */
 
     char_u	*sl_midword;	/* MIDWORD string or NULL */
 
--- a/src/spellfile.c
+++ b/src/spellfile.c
@@ -54,8 +54,8 @@
  *			    website, etc)
  *
  * sectionID == SN_REGION: <regionname> ...
- * <regionname>	 2 bytes    Up to 8 region names: ca, au, etc.  Lower case.
- *			    First <regionname> is region 1.
+ * <regionname>	 2 bytes    Up to MAXREGIONS region names: ca, au, etc.  Lower
+ *			    case.  First <regionname> is region 1.
  *
  * sectionID == SN_CHARFLAGS: <charflagslen> <charflags>
  *				<folcharslen> <folchars>
@@ -832,7 +832,7 @@ read_region_section(FILE *fd, slang_T *l
 {
     int		i;
 
-    if (len > 16)
+    if (len > MAXREGIONS * 2)
 	return SP_FORMERROR;
     for (i = 0; i < len; ++i)
 	lp->sl_regions[i] = getc(fd);			/* <regionname> */
@@ -1952,8 +1952,9 @@ typedef struct spellinfo_S
     char_u	*si_info;	/* info text chars or NULL  */
     int		si_region_count; /* number of regions supported (1 when there
 				    are no regions) */
-    char_u	si_region_name[17]; /* region names; used only if
-				     * si_region_count > 1) */
+    char_u	si_region_name[MAXREGIONS * 2 + 1];
+				/* region names; used only if
+				 * si_region_count > 1) */
 
     garray_T	si_rep;		/* list of fromto_T entries from REP lines */
     garray_T	si_repsal;	/* list of fromto_T entries from REPSAL lines */
@@ -4234,7 +4235,7 @@ spell_read_wordfile(spellinfo_T *spin, c
 		else
 		{
 		    line += 8;
-		    if (STRLEN(line) > 16)
+		    if (STRLEN(line) > MAXREGIONS * 2)
 			smsg((char_u *)_("Too many regions in %s line %d: %s"),
 						       fname, lnum, line);
 		    else
@@ -5954,7 +5955,7 @@ mkspell(
     char_u	*wfname;
     char_u	**innames;
     int		incount;
-    afffile_T	*(afile[8]);
+    afffile_T	*(afile[MAXREGIONS]);
     int		i;
     int		len;
     stat_T	st;
@@ -6025,8 +6026,8 @@ mkspell(
 	EMSG(_(e_invarg));	/* need at least output and input names */
     else if (vim_strchr(gettail(wfname), '_') != NULL)
 	EMSG(_("E751: Output file name must not have region name"));
-    else if (incount > 8)
-	EMSG(_("E754: Only up to 8 regions supported"));
+    else if (incount > MAXREGIONS)
+	EMSGN(_("E754: Only up to %ld regions supported"), MAXREGIONS);
     else
     {
 	/* Check for overwriting before doing things that may take a lot of
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1490,
+/**/
     1489,
 /**/
     1488,