clang-analyzer: Reduce scope in spell.c.

This commit is contained in:
Florian Walch
2014-07-23 11:08:34 +02:00
parent c683858a6a
commit 141b74bcd4

View File

@@ -1261,28 +1261,12 @@ spell_check (
// For a match mip->mi_result is updated. // For a match mip->mi_result is updated.
static void find_word(matchinf_T *mip, int mode) static void find_word(matchinf_T *mip, int mode)
{ {
idx_T arridx = 0;
int endlen[MAXWLEN]; // length at possible word endings
idx_T endidx[MAXWLEN]; // possible word endings
int endidxcnt = 0;
int len;
int wlen = 0; int wlen = 0;
int flen; int flen;
int c;
char_u *ptr; char_u *ptr;
idx_T lo;
idx_T hi;
idx_T m;
char_u *s;
char_u *p;
int res = SP_BAD;
slang_T *slang = mip->mi_lp->lp_slang; slang_T *slang = mip->mi_lp->lp_slang;
unsigned flags;
char_u *byts; char_u *byts;
idx_T *idxs; idx_T *idxs;
bool word_ends;
bool prefix_found;
int nobreak_result;
if (mode == FIND_KEEPWORD || mode == FIND_KEEPCOMPOUND) { if (mode == FIND_KEEPWORD || mode == FIND_KEEPCOMPOUND) {
// Check for word with matching case in keep-case tree. // Check for word with matching case in keep-case tree.
@@ -1316,6 +1300,13 @@ static void find_word(matchinf_T *mip, int mode)
if (byts == NULL) if (byts == NULL)
return; // array is empty return; // array is empty
idx_T arridx = 0;
int endlen[MAXWLEN]; // length at possible word endings
idx_T endidx[MAXWLEN]; // possible word endings
int endidxcnt = 0;
int len;
int c;
// Repeat advancing in the tree until: // Repeat advancing in the tree until:
// - there is a byte that doesn't match, // - there is a byte that doesn't match,
// - we reach the end of the tree, // - we reach the end of the tree,
@@ -1356,10 +1347,10 @@ static void find_word(matchinf_T *mip, int mode)
c = ptr[wlen]; c = ptr[wlen];
if (c == TAB) // <Tab> is handled like <Space> if (c == TAB) // <Tab> is handled like <Space>
c = ' '; c = ' ';
lo = arridx; idx_T lo = arridx;
hi = arridx + len - 1; idx_T hi = arridx + len - 1;
while (lo < hi) { while (lo < hi) {
m = (lo + hi) / 2; idx_T m = (lo + hi) / 2;
if (byts[m] > c) if (byts[m] > c)
hi = m - 1; hi = m - 1;
else if (byts[m] < c) else if (byts[m] < c)
@@ -1393,6 +1384,9 @@ static void find_word(matchinf_T *mip, int mode)
} }
} }
char_u *p;
bool word_ends;
// Verify that one of the possible endings is valid. Try the longest // Verify that one of the possible endings is valid. Try the longest
// first. // first.
while (endidxcnt > 0) { while (endidxcnt > 0) {
@@ -1410,7 +1404,7 @@ static void find_word(matchinf_T *mip, int mode)
word_ends = true; word_ends = true;
// The prefix flag is before compound flags. Once a valid prefix flag // The prefix flag is before compound flags. Once a valid prefix flag
// has been found we try compound flags. // has been found we try compound flags.
prefix_found = false; bool prefix_found = false;
if (mode != FIND_KEEPWORD && has_mbyte) { if (mode != FIND_KEEPWORD && has_mbyte) {
// Compute byte length in original word, length may change // Compute byte length in original word, length may change
@@ -1418,7 +1412,7 @@ static void find_word(matchinf_T *mip, int mode)
// case-folded word is equal to the keep-case word. // case-folded word is equal to the keep-case word.
p = mip->mi_word; p = mip->mi_word;
if (STRNCMP(ptr, p, wlen) != 0) { if (STRNCMP(ptr, p, wlen) != 0) {
for (s = ptr; s < ptr + wlen; mb_ptr_adv(s)) for (char_u *s = ptr; s < ptr + wlen; mb_ptr_adv(s))
mb_ptr_adv(p); mb_ptr_adv(p);
wlen = (int)(p - mip->mi_word); wlen = (int)(p - mip->mi_word);
} }
@@ -1428,10 +1422,9 @@ static void find_word(matchinf_T *mip, int mode)
// prefix ID. // prefix ID.
// Repeat this if there are more flags/region alternatives until there // Repeat this if there are more flags/region alternatives until there
// is a match. // is a match.
res = SP_BAD;
for (len = byts[arridx - 1]; len > 0 && byts[arridx] == 0; for (len = byts[arridx - 1]; len > 0 && byts[arridx] == 0;
--len, ++arridx) { --len, ++arridx) {
flags = idxs[arridx]; uint32_t flags = idxs[arridx];
// For the fold-case tree check that the case of the checked word // For the fold-case tree check that the case of the checked word
// matches with what the word in the tree requires. // matches with what the word in the tree requires.
@@ -1527,7 +1520,7 @@ static void find_word(matchinf_T *mip, int mode)
mip->mi_compoff) != 0) { mip->mi_compoff) != 0) {
// case folding may have changed the length // case folding may have changed the length
p = mip->mi_word; p = mip->mi_word;
for (s = ptr; s < ptr + mip->mi_compoff; mb_ptr_adv(s)) for (char_u *s = ptr; s < ptr + mip->mi_compoff; mb_ptr_adv(s))
mb_ptr_adv(p); mb_ptr_adv(p);
} else } else
p = mip->mi_word + mip->mi_compoff; p = mip->mi_word + mip->mi_compoff;
@@ -1577,7 +1570,7 @@ static void find_word(matchinf_T *mip, int mode)
else if (flags & WF_NEEDCOMP) else if (flags & WF_NEEDCOMP)
continue; continue;
nobreak_result = SP_OK; int nobreak_result = SP_OK;
if (!word_ends) { if (!word_ends) {
int save_result = mip->mi_result; int save_result = mip->mi_result;
@@ -1601,7 +1594,7 @@ static void find_word(matchinf_T *mip, int mode)
// the case-folded word is equal to the keep-case word. // the case-folded word is equal to the keep-case word.
p = mip->mi_fword; p = mip->mi_fword;
if (STRNCMP(ptr, p, wlen) != 0) { if (STRNCMP(ptr, p, wlen) != 0) {
for (s = ptr; s < ptr + wlen; mb_ptr_adv(s)) for (char_u *s = ptr; s < ptr + wlen; mb_ptr_adv(s))
mb_ptr_adv(p); mb_ptr_adv(p);
mip->mi_compoff = (int)(p - mip->mi_fword); mip->mi_compoff = (int)(p - mip->mi_fword);
} }
@@ -1661,6 +1654,7 @@ static void find_word(matchinf_T *mip, int mode)
} }
} }
int res = SP_BAD;
if (flags & WF_BANNED) if (flags & WF_BANNED)
res = SP_BANNED; res = SP_BANNED;
else if (flags & WF_REGION) { else if (flags & WF_REGION) {
@@ -3767,7 +3761,6 @@ char_u *did_set_spelllang(win_T *wp)
&& !ASCII_ISALPHA(p[3])) { && !ASCII_ISALPHA(p[3])) {
STRLCPY(region_cp, p + 1, 3); STRLCPY(region_cp, p + 1, 3);
memmove(p, p + 3, len - (p - lang) - 2); memmove(p, p + 3, len - (p - lang) - 2);
len -= 3;
region = region_cp; region = region_cp;
} else } else
dont_use_region = true; dont_use_region = true;
@@ -3780,8 +3773,7 @@ char_u *did_set_spelllang(win_T *wp)
filename = false; filename = false;
if (len > 3 && lang[len - 3] == '_') { if (len > 3 && lang[len - 3] == '_') {
region = lang + len - 2; region = lang + len - 2;
len -= 3; lang[len - 3] = NUL;
lang[len] = NUL;
} else } else
dont_use_region = true; dont_use_region = true;