From b2cded14ecfcf995df17855badf4a7fd9c33c92f Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 24 Oct 2025 06:46:54 -0700 Subject: [PATCH] tweak --- esphome/components/select/select.cpp | 2 +- esphome/components/tuya/select/tuya_select.cpp | 2 +- esphome/core/helpers.h | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/esphome/components/select/select.cpp b/esphome/components/select/select.cpp index 5961d71faa..66cd51e15a 100644 --- a/esphome/components/select/select.cpp +++ b/esphome/components/select/select.cpp @@ -54,7 +54,7 @@ optional Select::active_index() const { optional Select::at(size_t index) const { if (this->has_index(index)) { const auto &options = traits.get_options(); - return std::string(options[index]); + return std::string(options.at(index)); } else { return {}; } diff --git a/esphome/components/tuya/select/tuya_select.cpp b/esphome/components/tuya/select/tuya_select.cpp index 7b175ee195..d9dc532771 100644 --- a/esphome/components/tuya/select/tuya_select.cpp +++ b/esphome/components/tuya/select/tuya_select.cpp @@ -51,7 +51,7 @@ void TuyaSelect::dump_config() { this->select_id_, this->is_int_ ? "int" : "enum"); const auto &options = this->traits.get_options(); for (size_t i = 0; i < this->mappings_.size(); i++) { - ESP_LOGCONFIG(TAG, " %i: %s", this->mappings_.at(i), options[i]); + ESP_LOGCONFIG(TAG, " %i: %s", this->mappings_.at(i), options.at(i)); } } diff --git a/esphome/core/helpers.h b/esphome/core/helpers.h index 15f05b9b6f..cf21ddc16d 100644 --- a/esphome/core/helpers.h +++ b/esphome/core/helpers.h @@ -322,6 +322,11 @@ template class FixedVector { T &operator[](size_t i) { return data_[i]; } const T &operator[](size_t i) const { return data_[i]; } + /// Access element with bounds checking (matches std::vector behavior) + /// Note: No exception thrown on out of bounds - caller must ensure index is valid + T &at(size_t i) { return data_[i]; } + const T &at(size_t i) const { return data_[i]; } + // Iterator support for range-based for loops T *begin() { return data_; } T *end() { return data_ + size_; }