From 541c697a42e5ff46434a3f4fdcf4e8e1cb6c6777 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 13 Oct 2025 18:52:49 -1000 Subject: [PATCH] [mdns] Use FixedVector for txt_records to reduce flash usage --- esphome/components/mdns/mdns_component.cpp | 4 ++-- esphome/components/mdns/mdns_component.h | 2 +- esphome/core/helpers.h | 9 +++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/esphome/components/mdns/mdns_component.cpp b/esphome/components/mdns/mdns_component.cpp index fea3ced99f..ef585db51b 100644 --- a/esphome/components/mdns/mdns_component.cpp +++ b/esphome/components/mdns/mdns_component.cpp @@ -83,7 +83,7 @@ void MDNSComponent::compile_records_(StaticVector port; - std::vector txt_records; + FixedVector txt_records; }; class MDNSComponent : public Component { diff --git a/esphome/core/helpers.h b/esphome/core/helpers.h index e352c9c415..b94826629f 100644 --- a/esphome/core/helpers.h +++ b/esphome/core/helpers.h @@ -197,6 +197,15 @@ template class FixedVector { public: FixedVector() = default; + /// Constructor from initializer list - allocates exact size needed + /// This enables brace initialization: FixedVector v = {1, 2, 3}; + FixedVector(std::initializer_list init) { + init(init.size()); + for (const auto &item : init) { + push_back(item); + } + } + ~FixedVector() { cleanup_(); } // Disable copy operations (avoid accidental expensive copies)