From b6a582d86d4cae24dec31a40db11d8da7f57227b Mon Sep 17 00:00:00 2001 From: DrZlo13 Date: Mon, 1 Nov 2021 06:02:58 +1000 Subject: [PATCH] Fix memleak in NVS save\load --- main/nvs.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/main/nvs.c b/main/nvs.c index e5d6248..03cfcd3 100644 --- a/main/nvs.c +++ b/main/nvs.c @@ -21,17 +21,21 @@ esp_err_t nvs_save_string(const char* key, const mstring_t* value) { nvs_handle_t nvs_handle; esp_err_t err; - err = nvs_open(NVS_STORE, NVS_READWRITE, &nvs_handle); - if(err != ESP_OK) return err; + do { + err = nvs_open(NVS_STORE, NVS_READWRITE, &nvs_handle); + if(err != ESP_OK) break; - err = nvs_set_str(nvs_handle, key, mstring_get_cstr(value)); - if(err != ESP_OK) return err; + err = nvs_set_str(nvs_handle, key, mstring_get_cstr(value)); + if(err != ESP_OK) break; - err = nvs_commit(nvs_handle); - if(err != ESP_OK) return err; + err = nvs_commit(nvs_handle); + if(err != ESP_OK) break; - nvs_close(nvs_handle); - return ESP_OK; + nvs_close(nvs_handle); + err = ESP_OK; + } while(0); + + return err; } esp_err_t nvs_load_string(const char* key, mstring_t* value) { @@ -41,18 +45,17 @@ esp_err_t nvs_load_string(const char* key, mstring_t* value) { do { err = nvs_open(NVS_STORE, NVS_READWRITE, &nvs_handle); - if(err != ESP_OK) return err; + if(err != ESP_OK) break; size_t required_size = 0; err = nvs_get_str(nvs_handle, key, NULL, &required_size); - if(err != ESP_OK) return err; + if(err != ESP_OK) break; buffer = malloc(required_size + sizeof(uint32_t)); err = nvs_get_str(nvs_handle, key, buffer, &required_size); - if(err != ESP_OK) return err; + if(err != ESP_OK) break; mstring_set(value, buffer); - nvs_close(nvs_handle); err = ESP_OK; } while(0);