diff --git a/esphome/components/mdns/mdns_component.cpp b/esphome/components/mdns/mdns_component.cpp index ef585db51b..7b36fce229 100644 --- a/esphome/components/mdns/mdns_component.cpp +++ b/esphome/components/mdns/mdns_component.cpp @@ -175,8 +175,8 @@ void MDNSComponent::compile_records_(StaticVectorservices_ = services; + // Move to member variable if storage is enabled (verbose logging, OpenThread, or extra services) + this->services_ = std::move(services); #endif } diff --git a/esphome/core/helpers.h b/esphome/core/helpers.h index c0e73b70e0..a9c0427917 100644 --- a/esphome/core/helpers.h +++ b/esphome/core/helpers.h @@ -208,32 +208,11 @@ template class FixedVector { ~FixedVector() { cleanup_(); } - // Copy constructor - performs deep copy - FixedVector(const FixedVector &other) { - if (other.size_ > 0) { - init(other.size_); - for (size_t i = 0; i < other.size_; i++) { - push_back(other.data_[i]); - } - } - } + // Disable copy operations - use std::move() to transfer ownership + FixedVector(const FixedVector &) = delete; + FixedVector &operator=(const FixedVector &) = delete; - // Copy assignment operator - performs deep copy - FixedVector &operator=(const FixedVector &other) { - if (this != &other) { - cleanup_(); - reset_(); - if (other.size_ > 0) { - init(other.size_); - for (size_t i = 0; i < other.size_; i++) { - push_back(other.data_[i]); - } - } - } - return *this; - } - - // Enable move semantics (allows use in move-only containers like std::vector) + // Enable move semantics FixedVector(FixedVector &&other) noexcept : data_(other.data_), size_(other.size_), capacity_(other.capacity_) { other.reset_(); }