mirror of
https://github.com/espressif/esp-idf.git
synced 2026-04-27 19:13:21 +00:00
fix(storage/spiffs): fix readdir setting errno on directory end
spiffs_res_to_errno maps `SPIFFS_ERR_END_OF_OBJECT` to EIO which breaks the common contract where errno should be 0 if readdir iterated through all the entries in a directory. The fix is explicitly checking for `SPIFFS_ERR_END_OF_OBJECT` and in that case set errno to 0.
This commit is contained in:
committed by
sonika.rathi
parent
97013a5166
commit
1aa0d7fd2a
@@ -746,7 +746,15 @@ static int vfs_spiffs_readdir_r(void* ctx, DIR* pdir, struct dirent* entry,
|
||||
char * item_name;
|
||||
do {
|
||||
if (SPIFFS_readdir(&dir->d, &out) == 0) {
|
||||
errno = spiffs_res_to_errno(SPIFFS_errno(efs->fs));
|
||||
s32_t spiffs_res = SPIFFS_errno(efs->fs);
|
||||
switch (spiffs_res) {
|
||||
case SPIFFS_ERR_END_OF_OBJECT:
|
||||
errno = 0;
|
||||
break;
|
||||
default:
|
||||
errno = spiffs_res_to_errno(spiffs_res);
|
||||
break;
|
||||
}
|
||||
SPIFFS_clearerr(efs->fs);
|
||||
if (!errno) {
|
||||
*out_dirent = NULL;
|
||||
|
||||
Reference in New Issue
Block a user