From 7447d0860513dc8e87532e5958a8b29a08a818bf Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Mon, 22 Aug 2016 11:58:13 +0800 Subject: [PATCH] components/nvs: clear handles list on init, fix returning *length in nvs_get_{str,blob} --- components/nvs_flash/src/nvs_api.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/components/nvs_flash/src/nvs_api.cpp b/components/nvs_flash/src/nvs_api.cpp index 041dc9e46..f9292e680 100644 --- a/components/nvs_flash/src/nvs_api.cpp +++ b/components/nvs_flash/src/nvs_api.cpp @@ -56,6 +56,7 @@ extern "C" esp_err_t nvs_flash_init(uint32_t baseSector, uint32_t sectorCount) Lock::init(); Lock lock; NVS_DEBUGV("%s %d %d\r\n", __func__, baseSector, sectorCount); + s_nvs_handles.clear(); return s_nvs_storage.init(baseSector, sectorCount); } @@ -260,12 +261,15 @@ static esp_err_t nvs_get_str_or_blob(nvs_handle handle, nvs::ItemType type, cons return err; } - if (length != nullptr && out_value == nullptr) { + if (length == nullptr) { + return ESP_ERR_NVS_INVALID_LENGTH; + } + else if (out_value == nullptr) { *length = dataSize; return ESP_OK; } - - if (length == nullptr || *length < dataSize) { + else if (*length < dataSize) { + *length = dataSize; return ESP_ERR_NVS_INVALID_LENGTH; }