diff options
| -rw-r--r-- | lexlib/WordList.cxx | 28 | 
1 files changed, 15 insertions, 13 deletions
| diff --git a/lexlib/WordList.cxx b/lexlib/WordList.cxx index 51d68a659..eb91692d7 100644 --- a/lexlib/WordList.cxx +++ b/lexlib/WordList.cxx @@ -45,22 +45,24 @@ static char **ArrayFromWordList(char *wordlist, int *len, bool onlyLineEnds = fa  		prev = curr;  	}  	char **keywords = new char *[words + 1]; -	words = 0; -	prev = '\0'; -	size_t slen = strlen(wordlist); -	for (size_t k = 0; k < slen; k++) { -		if (!wordSeparator[static_cast<unsigned char>(wordlist[k])]) { -			if (!prev) { -				keywords[words] = &wordlist[k]; -				words++; +	int wordsStore = 0; +	const size_t slen = strlen(wordlist); +	if (words) { +		prev = '\0'; +		for (size_t k = 0; k < slen; k++) { +			if (!wordSeparator[static_cast<unsigned char>(wordlist[k])]) { +				if (!prev) { +					keywords[wordsStore] = &wordlist[k]; +					wordsStore++; +				} +			} else { +				wordlist[k] = '\0';  			} -		} else { -			wordlist[k] = '\0'; +			prev = wordlist[k];  		} -		prev = wordlist[k];  	} -	keywords[words] = &wordlist[slen]; -	*len = words; +	keywords[wordsStore] = &wordlist[slen]; +	*len = wordsStore;  	return keywords;  } | 
