From 2d2a756a3c0fbd01cd0f7678b4f7ac6caa890234 Mon Sep 17 00:00:00 2001 From: Auska Date: Tue, 14 Oct 2025 13:12:03 +0800 Subject: [PATCH] fix: replace VLA Avoids -Wvla-cxx-extension warning by using standard C++ container. VLA is not part of standard C++ and causes portability issues. --- src/display/text_element_string.cc | 12 ++++++------ src/rpc/parse.cc | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/display/text_element_string.cc b/src/display/text_element_string.cc index c093bf33..08364dcb 100644 --- a/src/display/text_element_string.cc +++ b/src/display/text_element_string.cc @@ -50,16 +50,16 @@ TextElementStringBase::print(char* first, char* last, Canvas::attributes_list* a return first; if (m_flags & flag_escape_hex) { - char buffer[last - first]; - char* bufferLast = copy_string(buffer, buffer + (last - first), target); + auto buffer = std::make_unique(last - first); + char* bufferLast = copy_string(buffer.get(), buffer.get() + (last - first), target); - first = rak::transform_hex(buffer, bufferLast, first, last); + first = rak::transform_hex(buffer.get(), bufferLast, first, last); } else if (m_flags & flag_escape_html) { - char buffer[last - first]; - char* bufferLast = copy_string(buffer, buffer + (last - first), target); + auto buffer = std::make_unique(last - first); + char* bufferLast = copy_string(buffer.get(), buffer.get() + (last - first), target); - first = rak::copy_escape_html(buffer, bufferLast, first, last); + first = rak::copy_escape_html(buffer.get(), bufferLast, first, last); } else { first = copy_string(first, last, target); diff --git a/src/rpc/parse.cc b/src/rpc/parse.cc index 003abff8..6fe7b66e 100644 --- a/src/rpc/parse.cc +++ b/src/rpc/parse.cc @@ -405,12 +405,12 @@ convert_to_value_nothrow(const torrent::Object& src, int64_t* value, int base, i case torrent::Object::TYPE_RAW_STRING: { const torrent::raw_string& str = src.as_raw_string(); - char buffer[str.size() + 1]; - std::memcpy(buffer, str.data(), str.size()); + auto buffer = std::make_unique(str.size() + 1); + std::memcpy(buffer.get(), str.data(), str.size()); buffer[str.size()] = '\0'; - return parse_skip_wspace(parse_value(buffer, value, base, unit), buffer + str.size()) - == buffer + str.size(); + return parse_skip_wspace(parse_value(buffer.get(), value, base, unit), buffer.get() + str.size()) + == buffer.get() + str.size(); } case torrent::Object::TYPE_NONE: *value = 0;