extern "C" esp_err_t nvs_flash_init_custom(const char *partName, uint32_t baseSector, uint32_t sectorCount)
{
ESP_LOGD(TAG, "nvs_flash_init_custom partition=%s start=%d count=%d", partName, baseSector, sectorCount);
- nvs::Storage* mStorage;
-
- mStorage = lookup_storage_from_name(partName);
- if (mStorage == NULL) {
- mStorage = new nvs::Storage((const char *)partName);
- s_nvs_storage_list.push_back(mStorage);
+ nvs::Storage* new_storage = NULL;
+ nvs::Storage* storage = lookup_storage_from_name(partName);
+ if (storage == NULL) {
+ new_storage = new nvs::Storage((const char *)partName);
+ storage = new_storage;
}
- return mStorage->init(baseSector, sectorCount);
+ esp_err_t err = storage->init(baseSector, sectorCount);
+ if (new_storage != NULL) {
+ if (err == ESP_OK) {
+ s_nvs_storage_list.push_back(new_storage);
+ } else {
+ delete new_storage;
+ }
+ }
+ return err;
}
#ifdef ESP_PLATFORM