X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=parse_trigrams.cpp;h=9e72aac9bcfbb71f085b3553d81ef80278c058d3;hb=fd6198891d6fd9642effc0843fef6f23b991af3e;hp=678f520fd03cc7c11c63b3cae7f77e712196c56f;hpb=567546a0c6a930f240f0b76d21c9573d948f4b73;p=plocate diff --git a/parse_trigrams.cpp b/parse_trigrams.cpp index 678f520..9e72aac 100644 --- a/parse_trigrams.cpp +++ b/parse_trigrams.cpp @@ -3,6 +3,7 @@ #include "unique_sort.h" #include +#include #include #include @@ -171,6 +172,7 @@ void parse_trigrams_ignore_case(const string &needle, vector // involving ICU or the likes. mbtowc(nullptr, 0, 0); const char *ptr = needle.c_str(); + unique_ptr buf(new char[MB_CUR_MAX]); while (*ptr != '\0') { wchar_t ch; int ret = mbtowc(&ch, ptr, strlen(ptr)); @@ -179,17 +181,16 @@ void parse_trigrams_ignore_case(const string &needle, vector exit(1); } - char buf[MB_CUR_MAX]; vector alt; alt.push_back(string(ptr, ret)); ptr += ret; if (towlower(ch) != wint_t(ch)) { - ret = wctomb(buf, towlower(ch)); - alt.push_back(string(buf, ret)); + ret = wctomb(buf.get(), towlower(ch)); + alt.push_back(string(buf.get(), ret)); } if (towupper(ch) != wint_t(ch) && towupper(ch) != towlower(ch)) { - ret = wctomb(buf, towupper(ch)); - alt.push_back(string(buf, ret)); + ret = wctomb(buf.get(), towupper(ch)); + alt.push_back(string(buf.get(), ret)); } alternatives_for_cp.push_back(move(alt)); }