Fix buffer overflow if output iterator is std::back_insert_iterator and value is escaped (debug format)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
This commit is contained in:
committed by
Victor Zverovich
parent
401f087394
commit
961df829b9
@@ -2388,9 +2388,12 @@ FMT_CONSTEXPR auto write(OutputIt out, basic_string_view<Char> s,
|
||||
size = code_point_index(s, to_unsigned(specs.precision));
|
||||
bool is_debug = specs.type == presentation_type::debug;
|
||||
size_t width = 0;
|
||||
|
||||
if (is_debug) size = write_escaped_string(counting_iterator{}, s).count();
|
||||
|
||||
if (specs.width != 0) {
|
||||
if (is_debug)
|
||||
width = write_escaped_string(counting_iterator{}, s).count();
|
||||
width = size;
|
||||
else
|
||||
width = compute_width(basic_string_view<Char>(data, size));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user