Skip to content

Commit 62014ae

Browse files
authored
[k2] fix std::format_to_n usage (#1413)
1 parent 0d13f96 commit 62014ae

2 files changed

Lines changed: 13 additions & 10 deletions

File tree

runtime-light/stdlib/diagnostics/detail/logs.h

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <cstddef>
88
#include <cstring>
99
#include <format>
10+
#include <iterator>
1011
#include <span>
1112
#include <string_view>
1213
#include <type_traits>
@@ -36,10 +37,10 @@ using wrapped_arg_t = std::invoke_result_t<decltype(impl::wrap_log_argument<T>),
3637

3738
template<typename... Args>
3839
size_t format_log_message(std::span<char> message_buffer, std::format_string<impl::wrapped_arg_t<Args>...> fmt, Args&&... args) noexcept {
39-
auto [out, size]{std::format_to_n<decltype(message_buffer.data()), impl::wrapped_arg_t<Args>...>(message_buffer.data(), message_buffer.size() - 1, fmt,
40-
impl::wrap_log_argument(std::forward<Args>(args))...)};
40+
auto [out, _]{std::format_to_n<decltype(message_buffer.data()), impl::wrapped_arg_t<Args>...>(message_buffer.data(), message_buffer.size() - 1, fmt,
41+
impl::wrap_log_argument(std::forward<Args>(args))...)};
4142
*out = '\0';
42-
return size;
43+
return std::distance(message_buffer.data(), out);
4344
}
4445

4546
inline size_t resolve_log_trace(std::span<char> trace_buffer, std::span<void* const> raw_trace) noexcept {
@@ -48,18 +49,18 @@ inline size_t resolve_log_trace(std::span<char> trace_buffer, std::span<void* co
4849
}
4950

5051
if (auto backtrace_symbols{kphp::diagnostic::backtrace_symbols(raw_trace)}; !backtrace_symbols.empty()) {
51-
const auto [trace_out, trace_size]{std::format_to_n(trace_buffer.data(), trace_buffer.size() - 1, "\n{}", backtrace_symbols)};
52+
const auto [trace_out, _]{std::format_to_n(trace_buffer.data(), trace_buffer.size() - 1, "\n{}", backtrace_symbols)};
5253
*trace_out = '\0';
53-
return trace_size;
54+
return std::distance(trace_buffer.data(), trace_out);
5455
} else if (auto backtrace_addresses{kphp::diagnostic::backtrace_addresses(raw_trace)}; !backtrace_addresses.empty()) {
55-
const auto [trace_out, trace_size]{std::format_to_n(trace_buffer.data(), trace_buffer.size() - 1, "{}", backtrace_addresses)};
56+
const auto [trace_out, _]{std::format_to_n(trace_buffer.data(), trace_buffer.size() - 1, "{}", backtrace_addresses)};
5657
*trace_out = '\0';
57-
return trace_size;
58+
return std::distance(trace_buffer.data(), trace_out);
5859
} else {
5960
static constexpr std::string_view DEFAULT_TRACE = "[]";
60-
const auto [trace_out, trace_size]{std::format_to_n(trace_buffer.data(), trace_buffer.size() - 1, "{}", DEFAULT_TRACE)};
61+
const auto [trace_out, _]{std::format_to_n(trace_buffer.data(), trace_buffer.size() - 1, "{}", DEFAULT_TRACE)};
6162
*trace_out = '\0';
62-
return trace_size;
63+
return std::distance(trace_buffer.data(), trace_out);
6364
}
6465
}
6566

runtime-light/stdlib/diagnostics/error-handling-functions.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <cstddef>
99
#include <cstdint>
1010
#include <format>
11+
#include <iterator>
1112
#include <span>
1213
#include <string_view>
1314
#include <utility>
@@ -60,8 +61,9 @@ inline array<array<string>> format_backtrace_addresses(std::span<void* const> ba
6061

6162
for (const auto& address : resolved_backtrace) {
6263
std::array<char, LOG_BUFFER_SIZE> log_buffer{};
63-
const auto [out, recorded]{std::format_to_n(log_buffer.data(), log_buffer.size() - 1, "{}", address)};
64+
const auto [out, _]{std::format_to_n(log_buffer.data(), log_buffer.size() - 1, "{}", address)};
6465
*out = '\0';
66+
const auto recorded{std::distance(log_buffer.data(), out)};
6567
array<string> frame_info{array_size{1, false}};
6668
frame_info.set_value(function_key, string{log_buffer.data(), static_cast<string::size_type>(recorded)});
6769

0 commit comments

Comments
 (0)