From fddaaef06ea1428ac7fae0b6c7fc97165abb2f50 Mon Sep 17 00:00:00 2001 From: ronghulin Date: Tue, 2 Mar 2021 20:04:05 +0800 Subject: [PATCH] fix phy init memory leak --- components/esp_wifi/src/phy_init.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/components/esp_wifi/src/phy_init.c b/components/esp_wifi/src/phy_init.c index e5a6213ebd..f49ba37765 100644 --- a/components/esp_wifi/src/phy_init.c +++ b/components/esp_wifi/src/phy_init.c @@ -352,6 +352,7 @@ const esp_phy_init_data_t* esp_phy_get_init_data(void) PHY_INIT_MAGIC, sizeof(phy_init_magic_post)) != 0) { #ifndef CONFIG_ESP32_PHY_DEFAULT_INIT_IF_INVALID ESP_LOGE(TAG, "failed to validate PHY data partition"); + free(init_data_store); return NULL; #else ESP_LOGE(TAG, "failed to validate PHY data partition, restoring default data into flash..."); @@ -855,18 +856,19 @@ esp_err_t esp_phy_update_country_info(const char *country) { #if CONFIG_ESP32_SUPPORT_MULTIPLE_PHY_INIT_DATA_BIN uint8_t phy_init_data_type_map = 0; - //if country equal s_phy_current_country, return; - if (!memcmp(country, s_phy_current_country, sizeof(s_phy_current_country))) { - return ESP_OK; - } - - memcpy(s_phy_current_country, country, sizeof(s_phy_current_country)); if (!s_multiple_phy_init_data_bin) { ESP_LOGD(TAG, "Does not support multiple PHY init data bins"); return ESP_FAIL; } + //if country equal s_phy_current_country, return; + if (!memcmp(country, s_phy_current_country, sizeof(s_phy_current_country))) { + return ESP_OK; + } + + memcpy(s_phy_current_country, country, sizeof(s_phy_current_country)); + phy_init_data_type_map = phy_find_bin_type_according_country(country); if (phy_init_data_type_map == s_phy_init_data_type) { return ESP_OK;