From 39b6a3fcbfa75b7b02fcfa895128d15437adf583 Mon Sep 17 00:00:00 2001 From: Vamshi Gajjela Date: Thu, 17 Mar 2022 14:57:32 +0530 Subject: [PATCH] vfs: bugfix vfs_fat_write/pwrite upon disk-full Closes https://github.com/espressif/esp-idf/issues/5027 --- components/fatfs/vfs/vfs_fat.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/components/fatfs/vfs/vfs_fat.c b/components/fatfs/vfs/vfs_fat.c index 1ce28a1670..b6dea429ee 100644 --- a/components/fatfs/vfs/vfs_fat.c +++ b/components/fatfs/vfs/vfs_fat.c @@ -375,6 +375,10 @@ static ssize_t vfs_fat_write(void* ctx, int fd, const void * data, size_t size) } unsigned written = 0; res = f_write(file, data, size, &written); + if (((written == 0) && (size != 0)) && (res == 0)) { + errno = ENOSPC; + return -1; + } if (res != FR_OK) { ESP_LOGD(TAG, "%s: fresult=%d", __func__, res); errno = fresult_to_errno(res); @@ -459,6 +463,10 @@ static ssize_t vfs_fat_pwrite(void *ctx, int fd, const void *src, size_t size, o unsigned wr = 0; f_res = f_write(file, src, size, &wr); + if (((wr == 0) && (size != 0)) && (f_res == 0)) { + errno = ENOSPC; + return -1; + } if (f_res == FR_OK) { ret = wr; } else {