X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=components%2Fnvs_flash%2Fsrc%2Fnvs_storage.cpp;h=3ad61667cfb34249e7aff20b919223a43c1e881f;hb=911f96ad2173e6efdabd83199160bff708d0ce8d;hp=461309771769aeb0d91e380c3ecbec6b5ef869f5;hpb=a6a9484084e0bd02f0fdc4fa2e62a1f810aa167f;p=esp-idf diff --git a/components/nvs_flash/src/nvs_storage.cpp b/components/nvs_flash/src/nvs_storage.cpp index 4613097717..3ad61667cf 100644 --- a/components/nvs_flash/src/nvs_storage.cpp +++ b/components/nvs_flash/src/nvs_storage.cpp @@ -180,6 +180,9 @@ esp_err_t Storage::writeMultiPageBlob(uint8_t nsIndex, const char* key, const vo err = mPageManager.requestNewPage(); if (err != ESP_OK) { return err; + } else if(getCurrentPage().getVarDataTailroom() == tailroom) { + /* We got the same page or we are not improving.*/ + return ESP_ERR_NVS_NOT_ENOUGH_SPACE; } else { continue; } @@ -257,7 +260,6 @@ esp_err_t Storage::writeItem(uint8_t nsIndex, ItemType datatype, const char* key err = findItem(nsIndex, datatype, key, findPage, item); } - if (err != ESP_OK && err != ESP_ERR_NVS_NOT_FOUND) { return err; } @@ -280,6 +282,7 @@ esp_err_t Storage::writeItem(uint8_t nsIndex, ItemType datatype, const char* key } /* Write the blob with new version*/ err = writeMultiPageBlob(nsIndex, key, data, dataSize, nextStart); + if (err == ESP_ERR_NVS_PAGE_FULL) { return ESP_ERR_NVS_NOT_ENOUGH_SPACE; }