aboutsummaryrefslogtreecommitdiffhomepage
path: root/lexlib/WordList.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'lexlib/WordList.cxx')
-rw-r--r--lexlib/WordList.cxx28
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;
}