diff options
Diffstat (limited to 'lexlib/WordList.cxx')
-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; } |