From 72ebee5267ad5bf633a1705de9890287bd644ab3 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 16 Jan 2026 13:28:51 -1000 Subject: [PATCH] bot review --- esphome/components/mapping/mapping.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/esphome/components/mapping/mapping.h b/esphome/components/mapping/mapping.h index 92138c4377..1e4f7858aa 100644 --- a/esphome/components/mapping/mapping.h +++ b/esphome/components/mapping/mapping.h @@ -45,16 +45,25 @@ template class Mapping { } else if constexpr (std::is_same_v) { esph_log_e(TAG, "Key '%s' not found in mapping", key.c_str()); } else if constexpr (std::is_integral_v) { - char buf[24]; // enough for int64_t - buf_append_printf(buf, sizeof(buf), 0, "%" PRId64, static_cast(key)); + char buf[24]; // enough for 64-bit integer + if constexpr (std::is_unsigned_v) { + buf_append_printf(buf, sizeof(buf), 0, "%" PRIu64, static_cast(key)); + } else { + buf_append_printf(buf, sizeof(buf), 0, "%" PRId64, static_cast(key)); + } esph_log_e(TAG, "Key '%s' not found in mapping", buf); } else if constexpr (std::is_floating_point_v) { - char buf[24]; + char buf[32]; // enough for %g with doubles buf_append_printf(buf, sizeof(buf), 0, "%g", static_cast(key)); esph_log_e(TAG, "Key '%s' not found in mapping", buf); } else if constexpr (std::is_enum_v) { + using underlying_t = std::underlying_type_t; char buf[24]; // enough for underlying integral type - buf_append_printf(buf, sizeof(buf), 0, "%" PRId64, static_cast(key)); + if constexpr (std::is_unsigned_v) { + buf_append_printf(buf, sizeof(buf), 0, "%" PRIu64, static_cast(static_cast(key))); + } else { + buf_append_printf(buf, sizeof(buf), 0, "%" PRId64, static_cast(static_cast(key))); + } esph_log_e(TAG, "Key '%s' not found in mapping", buf); } else { // Fallback for custom types - likely unreachable but kept for compatibility