From 6d04ac0835c3c5e065fefd27ce89024120652523 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Mon, 23 Aug 2021 20:29:23 +0200 Subject: [PATCH] Fix a warning with -Wvla (MB_CUR_MAX is not a compile-time constant). --- parse_trigrams.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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)); } -- 2.39.2