mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge #8845 from janlazo/vim-8.0.1490
This commit is contained in:
commit
c30812be7b
@ -13,6 +13,9 @@
|
|||||||
// Some places assume a word length fits in a
|
// Some places assume a word length fits in a
|
||||||
// byte, thus it can't be above 255.
|
// byte, thus it can't be above 255.
|
||||||
|
|
||||||
|
// Number of regions supported.
|
||||||
|
#define MAXREGIONS 8
|
||||||
|
|
||||||
// Type used for indexes in the word tree need to be at least 4 bytes. If int
|
// 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?
|
// is 8 bytes we could use something smaller, but what?
|
||||||
typedef int idx_T;
|
typedef int idx_T;
|
||||||
@ -124,7 +127,8 @@ struct slang_S {
|
|||||||
|
|
||||||
char_u *sl_info; // infotext string or NULL
|
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
|
char_u *sl_midword; // MIDWORD string or NULL
|
||||||
|
|
||||||
|
@ -45,7 +45,8 @@
|
|||||||
// website, etc)
|
// website, etc)
|
||||||
//
|
//
|
||||||
// sectionID == SN_REGION: <regionname> ...
|
// sectionID == SN_REGION: <regionname> ...
|
||||||
// <regionname> 2 bytes Up to 8 region names: ca, au, etc. Lower case.
|
// <regionname> 2 bytes Up to MAXREGIONS region names: ca, au, etc.
|
||||||
|
// Lower case.
|
||||||
// First <regionname> is region 1.
|
// First <regionname> is region 1.
|
||||||
//
|
//
|
||||||
// sectionID == SN_CHARFLAGS: <charflagslen> <charflags>
|
// sectionID == SN_CHARFLAGS: <charflagslen> <charflags>
|
||||||
@ -460,7 +461,8 @@ typedef struct spellinfo_S {
|
|||||||
char_u *si_info; // info text chars or NULL
|
char_u *si_info; // info text chars or NULL
|
||||||
int si_region_count; // number of regions supported (1 when there
|
int si_region_count; // number of regions supported (1 when there
|
||||||
// are no regions)
|
// are no regions)
|
||||||
char_u si_region_name[17]; // region names; used only if
|
char_u si_region_name[MAXREGIONS * 2 + 1];
|
||||||
|
// region names; used only if
|
||||||
// si_region_count > 1)
|
// si_region_count > 1)
|
||||||
|
|
||||||
garray_T si_rep; // list of fromto_T entries from REP lines
|
garray_T si_rep; // list of fromto_T entries from REP lines
|
||||||
@ -1003,7 +1005,7 @@ static char_u *read_cnt_string(FILE *fd, int cnt_bytes, int *cntp)
|
|||||||
// Return SP_*ERROR flags.
|
// Return SP_*ERROR flags.
|
||||||
static int read_region_section(FILE *fd, slang_T *lp, int len)
|
static int read_region_section(FILE *fd, slang_T *lp, int len)
|
||||||
{
|
{
|
||||||
if (len > 16) {
|
if (len > MAXREGIONS * 2) {
|
||||||
return SP_FORMERROR;
|
return SP_FORMERROR;
|
||||||
}
|
}
|
||||||
SPELL_READ_NONNUL_BYTES((char *)lp->sl_regions, (size_t)len, fd, ;);
|
SPELL_READ_NONNUL_BYTES((char *)lp->sl_regions, (size_t)len, fd, ;);
|
||||||
@ -3612,10 +3614,10 @@ static int spell_read_wordfile(spellinfo_T *spin, char_u *fname)
|
|||||||
fname, lnum, line);
|
fname, lnum, line);
|
||||||
else {
|
else {
|
||||||
line += 8;
|
line += 8;
|
||||||
if (STRLEN(line) > 16)
|
if (STRLEN(line) > MAXREGIONS * 2) {
|
||||||
smsg(_("Too many regions in %s line %d: %s"),
|
smsg(_("Too many regions in %s line %d: %s"),
|
||||||
fname, lnum, line);
|
fname, lnum, line);
|
||||||
else {
|
} else {
|
||||||
spin->si_region_count = (int)STRLEN(line) / 2;
|
spin->si_region_count = (int)STRLEN(line) / 2;
|
||||||
STRCPY(spin->si_region_name, line);
|
STRCPY(spin->si_region_name, line);
|
||||||
|
|
||||||
@ -5077,7 +5079,7 @@ mkspell (
|
|||||||
char_u *wfname;
|
char_u *wfname;
|
||||||
char_u **innames;
|
char_u **innames;
|
||||||
int incount;
|
int incount;
|
||||||
afffile_T *(afile[8]);
|
afffile_T *(afile[MAXREGIONS]);
|
||||||
int i;
|
int i;
|
||||||
int len;
|
int len;
|
||||||
bool error = false;
|
bool error = false;
|
||||||
@ -5134,13 +5136,13 @@ mkspell (
|
|||||||
spin.si_add = true;
|
spin.si_add = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (incount <= 0)
|
if (incount <= 0) {
|
||||||
EMSG(_(e_invarg)); // need at least output and input names
|
EMSG(_(e_invarg)); // need at least output and input names
|
||||||
else if (vim_strchr(path_tail(wfname), '_') != NULL)
|
} else if (vim_strchr(path_tail(wfname), '_') != NULL) {
|
||||||
EMSG(_("E751: Output file name must not have region name"));
|
EMSG(_("E751: Output file name must not have region name"));
|
||||||
else if (incount > 8)
|
} else if (incount > MAXREGIONS) {
|
||||||
EMSG(_("E754: Only up to 8 regions supported"));
|
EMSGN(_("E754: Only up to %ld regions supported"), MAXREGIONS);
|
||||||
else {
|
} else {
|
||||||
// Check for overwriting before doing things that may take a lot of
|
// Check for overwriting before doing things that may take a lot of
|
||||||
// time.
|
// time.
|
||||||
if (!over_write && os_path_exists(wfname)) {
|
if (!over_write && os_path_exists(wfname)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user