Failure to call f_mount(NULL,...) makes FATFS attempt to clean up the old
FS object upon next mount. If previous mount operation has failed, some
parts of FS object may not be fully initialized, which will cause errors
(such as attempting to delete a mutex which wasn’t allocated).
{
const size_t workbuf_size = 4096;
void* workbuf = NULL;
+ FATFS* fs = NULL;
if (s_card != NULL) {
return ESP_ERR_INVALID_STATE;
char drv[3] = {(char)('0' + pdrv), ':', 0};
// connect FATFS to VFS
- FATFS* fs;
err = esp_vfs_fat_register(base_path, drv, mount_config->max_files, &fs);
if (err == ESP_ERR_INVALID_STATE) {
// it's okay, already registered with VFS
fail:
sdmmc_host_deinit();
free(workbuf);
+ if (fs) {
+ f_mount(NULL, drv, 0);
+ }
esp_vfs_fat_unregister_path(base_path);
ff_diskio_unregister(pdrv);
free(s_card);