mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-30 10:47:19 +02:00
vfs: bugfix vfs_fat_write/pwrite upon disk-full
Closes https://github.com/espressif/esp-idf/issues/5027
This commit is contained in:
committed by
Martin Vychodil
parent
f5ee7093b8
commit
b33e7f27ea
@ -375,6 +375,10 @@ static ssize_t vfs_fat_write(void* ctx, int fd, const void * data, size_t size)
|
|||||||
}
|
}
|
||||||
unsigned written = 0;
|
unsigned written = 0;
|
||||||
res = f_write(file, data, size, &written);
|
res = f_write(file, data, size, &written);
|
||||||
|
if (((written == 0) && (size != 0)) && (res == 0)) {
|
||||||
|
errno = ENOSPC;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
if (res != FR_OK) {
|
if (res != FR_OK) {
|
||||||
ESP_LOGD(TAG, "%s: fresult=%d", __func__, res);
|
ESP_LOGD(TAG, "%s: fresult=%d", __func__, res);
|
||||||
errno = fresult_to_errno(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;
|
unsigned wr = 0;
|
||||||
f_res = f_write(file, src, size, &wr);
|
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) {
|
if (f_res == FR_OK) {
|
||||||
ret = wr;
|
ret = wr;
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user