From f70ac4e5298c9bd55d56bf11141b64cb4da7eb9d 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 84d4a71795..6b32f32cf9 100644 --- a/components/esp_wifi/src/phy_init.c +++ b/components/esp_wifi/src/phy_init.c @@ -514,6 +514,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..."); @@ -1013,17 +1014,18 @@ 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 (!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)); - - if (!s_multiple_phy_init_data_bin) { - ESP_LOGD(TAG, "Does not support multiple PHY init data bins"); - return ESP_FAIL; - } phy_init_data_type_map = phy_find_bin_type_according_country(country); if (phy_init_data_type_map == s_phy_init_data_type) {