fix(fatfs): Fixed VFS adapter early return paths

This commit is contained in:
Martin Vychodil
2026-04-07 12:15:51 +02:00
parent 26ceedb5f8
commit 8240eea180
+9 -3
View File
@@ -562,7 +562,12 @@ static ssize_t vfs_fat_pwrite(void *ctx, int fd, const void *src, size_t size, o
f_res = f_write(file, src, size, &wr);
if (((wr == 0) && (size != 0)) && (f_res == 0)) {
errno = ENOSPC;
return -1;
ret = -1;
FRESULT seek_res = f_lseek(file, prev_pos);
if (seek_res != FR_OK) {
ESP_LOGE(TAG, "%s: f_lseek restore after ENOSPC write failed (fresult=%d)", __func__, seek_res);
}
goto pwrite_release;
}
if (f_res == FR_OK) {
ret = wr;
@@ -1026,7 +1031,7 @@ static void vfs_fat_seekdir(void* ctx, DIR* pdir, long offset)
if (res != FR_OK) {
ESP_LOGD(TAG, "%s: rewinddir fresult=%d", __func__, res);
errno = fresult_to_errno(res);
return;
goto seekdir_done;
}
fat_dir->offset = 0;
}
@@ -1035,10 +1040,11 @@ static void vfs_fat_seekdir(void* ctx, DIR* pdir, long offset)
if (res != FR_OK) {
ESP_LOGD(TAG, "%s: f_readdir fresult=%d", __func__, res);
errno = fresult_to_errno(res);
return;
goto seekdir_done;
}
fat_dir->offset++;
}
seekdir_done:
_lock_release(&fat_ctx->lock);
}