]> granicus.if.org Git - vim/commitdiff
patch 8.0.1490: number of spell regions is spread out through the code v8.0.1490
authorBram Moolenaar <Bram@vim.org>
Sat, 10 Feb 2018 13:12:43 +0000 (14:12 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 10 Feb 2018 13:12:43 +0000 (14:12 +0100)
Problem:    Number of spell regions is spread out through the code.
Solution:   Define MAXREGIONS.

src/spell.h
src/spellfile.c
src/version.c

index 4c44b546a84ad67ac90d9fccebdec60ea7dbf049..49ec0601e913479da0b58f0a70041fcc37ac4933 100644 (file)
@@ -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 */
 
index f6d7a6432f07a01a26eb50eb6a5fa2b9ee66e016..e5cc84164ba6d2d24e1acd4d5d05810fdf865665 100644 (file)
@@ -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 *lp, int len)
 {
     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, char_u *fname)
                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
index ccc10668ae76d08a393ca73d8d4fa59dc0951769..0a5475189581ea3445b089475f30abb3dc9096bc 100644 (file)
@@ -771,6 +771,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1490,
 /**/
     1489,
 /**/