Mercurial > vim
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