Skip to content

Commit 913ad91

Browse files
bm1549claude
andcommitted
Replace snprintf with std::to_chars for _dd.p.ksr formatting
Address PR feedback: remove format_rate function and use std::to_chars with std::chars_format::general inline instead of snprintf. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent ef4d91b commit 913ad91

1 file changed

Lines changed: 7 additions & 9 deletions

File tree

src/datadog/trace_segment.cpp

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
#include <datadog/telemetry/telemetry.h>
1212
#include <datadog/trace_segment.h>
1313

14+
#include <array>
1415
#include <cassert>
1516
#include <charconv>
16-
#include <cstdio>
1717
#include <string>
1818
#include <unordered_map>
1919
#include <utility>
@@ -35,12 +35,6 @@ namespace datadog {
3535
namespace tracing {
3636
namespace {
3737

38-
std::string format_rate(double rate) {
39-
char buf[32];
40-
std::snprintf(buf, sizeof(buf), "%.6g", rate);
41-
return std::string(buf);
42-
}
43-
4438
struct Cache {
4539
static int process_id;
4640

@@ -333,8 +327,12 @@ void TraceSegment::make_sampling_decision_if_null() {
333327
// configuration from the agent yet, so ksr would be meaningless.
334328
if (sampling_decision_->mechanism &&
335329
*sampling_decision_->mechanism != int(SamplingMechanism::DEFAULT)) {
336-
trace_tags_.emplace_back(tags::internal::ksr,
337-
format_rate(*sampling_decision_->configured_rate));
330+
std::array<char, 8> buf;
331+
const auto [ptr, ec] = std::to_chars(buf.data(), buf.data() + buf.size(),
332+
*sampling_decision_->configured_rate,
333+
std::chars_format::general, 6);
334+
assert(ec == std::errc());
335+
trace_tags_.emplace_back(tags::internal::ksr, std::string(buf.data(), ptr));
338336
}
339337
}
340338

0 commit comments

Comments
 (0)