From e4aec7f413d54fe45545adc2139253bb6921ae12 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 28 Oct 2025 22:57:50 -0500 Subject: [PATCH] make sure no dangling --- esphome/components/fan/fan.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/esphome/components/fan/fan.cpp b/esphome/components/fan/fan.cpp index 10705518ea..b5eb1121e3 100644 --- a/esphome/components/fan/fan.cpp +++ b/esphome/components/fan/fan.cpp @@ -101,7 +101,8 @@ FanCall FanRestoreState::to_call(Fan &fan) { if (fan.get_traits().supports_preset_modes()) { // Use stored preset index to get preset name - const auto &preset_modes = fan.get_traits().supported_preset_modes(); + auto traits = fan.get_traits(); + const auto &preset_modes = traits.supported_preset_modes(); if (this->preset_mode < preset_modes.size()) { call.set_preset_mode(preset_modes[this->preset_mode]); } @@ -116,7 +117,8 @@ void FanRestoreState::apply(Fan &fan) { if (fan.get_traits().supports_preset_modes()) { // Use stored preset index to get preset name - const auto &preset_modes = fan.get_traits().supported_preset_modes(); + auto traits = fan.get_traits(); + const auto &preset_modes = traits.supported_preset_modes(); if (this->preset_mode < preset_modes.size()) { fan.preset_mode = preset_modes[this->preset_mode]; } @@ -196,7 +198,8 @@ void Fan::save_state_() { state.direction = this->direction; if (this->get_traits().supports_preset_modes() && !this->preset_mode.empty()) { - const auto &preset_modes = this->get_traits().supported_preset_modes(); + auto traits = this->get_traits(); + const auto &preset_modes = traits.supported_preset_modes(); // Store index of current preset mode size_t i = 0; for (const auto &mode : preset_modes) {