mirror of
https://github.com/littlefs-project/littlefs.git
synced 2025-11-01 16:50:46 +00:00
Fixed issue where seeking to end-of-directory return LFS_ERR_INVAL
This was just an oversight. Seeking to the end of the directory should not error, but instead restore the directory to the state where the next read returns 0. Note this matches the behavior of lfs_file_tell/lfs_file_seek. Found by sosthene-nitrokey
This commit is contained in:
parent
384a498762
commit
b33a5b3f85
10
lfs.c
10
lfs.c
@ -2595,11 +2595,6 @@ static int lfs_dir_rawseek(lfs_t *lfs, lfs_dir_t *dir, lfs_off_t off) {
|
||||
dir->id = (off > 0 && lfs_pair_cmp(dir->head, lfs->root) == 0);
|
||||
|
||||
while (off > 0) {
|
||||
int diff = lfs_min(dir->m.count - dir->id, off);
|
||||
dir->id += diff;
|
||||
dir->pos += diff;
|
||||
off -= diff;
|
||||
|
||||
if (dir->id == dir->m.count) {
|
||||
if (!dir->m.split) {
|
||||
return LFS_ERR_INVAL;
|
||||
@ -2612,6 +2607,11 @@ static int lfs_dir_rawseek(lfs_t *lfs, lfs_dir_t *dir, lfs_off_t off) {
|
||||
|
||||
dir->id = 0;
|
||||
}
|
||||
|
||||
int diff = lfs_min(dir->m.count - dir->id, off);
|
||||
dir->id += diff;
|
||||
dir->pos += diff;
|
||||
off -= diff;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user