From: Ivan Grokhotkov Date: Wed, 18 Apr 2018 03:01:21 +0000 (+0800) Subject: Merge branch 'bugfix/nvs_failed_crc_assert' into 'master' X-Git-Tag: v3.1-beta1~248 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=17ab60d6428d3c1c3b54511b2a24742fe3e0f9a2;p=esp-idf Merge branch 'bugfix/nvs_failed_crc_assert' into 'master' nvs: don’t expect items with bad CRC to be in cache See merge request idf/esp-idf!2239 --- 17ab60d6428d3c1c3b54511b2a24742fe3e0f9a2 diff --cc components/nvs_flash/src/nvs_page.cpp index cd0141f684,d05f97edc2..54d6db7bd3 --- a/components/nvs_flash/src/nvs_page.cpp +++ b/components/nvs_flash/src/nvs_page.cpp @@@ -586,20 -584,12 +584,22 @@@ esp_err_t Page::mLoadEntryTable( } continue; } - + assert(item.span > 0); + mHashList.insert(item, i); + size_t span = item.span; + + if (item.datatype == ItemType::BLOB || item.datatype == ItemType::SZ) { + for (size_t j = i + 1; j < i + span; ++j) { + if (mEntryTable.get(j) != EntryState::WRITTEN) { + eraseEntryAndSpan(i); + break; + } + } + } + i += span - 1; }