diff --git a/esphome/components/esp32_ble/ble.cpp b/esphome/components/esp32_ble/ble.cpp index ebf6530522..ef7cb6b055 100644 --- a/esphome/components/esp32_ble/ble.cpp +++ b/esphome/components/esp32_ble/ble.cpp @@ -261,8 +261,8 @@ bool ESP32BLE::ble_setup_() { #endif std::string name; - if (this->name_ != nullptr) { - name = this->name_; + if (this->name_.has_value()) { + name = this->name_.value(); if (App.is_name_add_mac_suffix_enabled()) { // MAC address suffix length (last 6 characters of 12-char MAC address string) constexpr size_t mac_address_suffix_len = 6; diff --git a/esphome/components/esp32_ble/ble.h b/esphome/components/esp32_ble/ble.h index e3d4beacdc..a2c2b00d14 100644 --- a/esphome/components/esp32_ble/ble.h +++ b/esphome/components/esp32_ble/ble.h @@ -112,7 +112,7 @@ class ESP32BLE : public Component { void loop() override; void dump_config() override; float get_setup_priority() const override; - void set_name(const char *name) { this->name_ = name; } + void set_name(const std::string &name) { this->name_ = name; } #ifdef USE_ESP32_BLE_ADVERTISING void advertising_start(); @@ -192,8 +192,8 @@ class ESP32BLE : public Component { esphome::LockFreeQueue ble_events_; esphome::EventPool ble_event_pool_; - // Pointer to compile-time string literal or nullptr (4 bytes on 32-bit) - const char *name_{nullptr}; + // optional (typically 16+ bytes on 32-bit, aligned to 4 bytes) + optional name_; // 4-byte aligned members #ifdef USE_ESP32_BLE_ADVERTISING