mirror of
https://github.com/eledio-devices/thirdparty-littlefs.git
synced 2025-11-01 00:38:29 +01:00
Fixed incorrect return value from lfs_file_seek
lfs_file_seek returned the _previous_ file offset on success, where most standards return the _calculated_ offset on success. This just falls into me not noticing a mistake, and shows why it's always helpful to have a second set of eyes on code.
This commit is contained in:
4
lfs.c
4
lfs.c
@@ -1522,8 +1522,6 @@ lfs_soff_t lfs_file_seek(lfs_t *lfs, lfs_file_t *file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update pos
|
// update pos
|
||||||
lfs_off_t pos = file->pos;
|
|
||||||
|
|
||||||
if (whence == LFS_SEEK_SET) {
|
if (whence == LFS_SEEK_SET) {
|
||||||
file->pos = off;
|
file->pos = off;
|
||||||
} else if (whence == LFS_SEEK_CUR) {
|
} else if (whence == LFS_SEEK_CUR) {
|
||||||
@@ -1540,7 +1538,7 @@ lfs_soff_t lfs_file_seek(lfs_t *lfs, lfs_file_t *file,
|
|||||||
file->pos = file->size + off;
|
file->pos = file->size + off;
|
||||||
}
|
}
|
||||||
|
|
||||||
return pos;
|
return file->pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
lfs_soff_t lfs_file_tell(lfs_t *lfs, lfs_file_t *file) {
|
lfs_soff_t lfs_file_tell(lfs_t *lfs, lfs_file_t *file) {
|
||||||
|
|||||||
@@ -133,15 +133,15 @@ tests/test.py << TEST
|
|||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => size;
|
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_CUR) => pos+size;
|
lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_CUR) => pos;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) => pos+size;
|
lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) >= 0 => 1;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
@@ -174,15 +174,15 @@ tests/test.py << TEST
|
|||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => size;
|
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_CUR) => pos+size;
|
lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_CUR) => pos;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) => pos+size;
|
lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) >= 0 => 1;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
@@ -211,7 +211,7 @@ tests/test.py << TEST
|
|||||||
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos;
|
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos;
|
||||||
lfs_file_write(&lfs, &file[0], buffer, size) => size;
|
lfs_file_write(&lfs, &file[0], buffer, size) => size;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos+size;
|
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "doggodogdog", size) => 0;
|
memcmp(buffer, "doggodogdog", size) => 0;
|
||||||
|
|
||||||
@@ -219,11 +219,11 @@ tests/test.py << TEST
|
|||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => size;
|
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "doggodogdog", size) => 0;
|
memcmp(buffer, "doggodogdog", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) => pos+size;
|
lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) >= 0 => 1;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
@@ -254,7 +254,7 @@ tests/test.py << TEST
|
|||||||
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos;
|
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos;
|
||||||
lfs_file_write(&lfs, &file[0], buffer, size) => size;
|
lfs_file_write(&lfs, &file[0], buffer, size) => size;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos+size;
|
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "doggodogdog", size) => 0;
|
memcmp(buffer, "doggodogdog", size) => 0;
|
||||||
|
|
||||||
@@ -262,11 +262,11 @@ tests/test.py << TEST
|
|||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => size;
|
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "doggodogdog", size) => 0;
|
memcmp(buffer, "doggodogdog", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) => pos+size;
|
lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) >= 0 => 1;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
@@ -288,13 +288,13 @@ tests/test.py << TEST
|
|||||||
for (int i = 0; i < sizeof(offsets) / sizeof(offsets[0]); i++) {
|
for (int i = 0; i < sizeof(offsets) / sizeof(offsets[0]); i++) {
|
||||||
lfs_soff_t off = offsets[i];
|
lfs_soff_t off = offsets[i];
|
||||||
memcpy(buffer, "hedgehoghog", size);
|
memcpy(buffer, "hedgehoghog", size);
|
||||||
lfs_file_seek(&lfs, &file[0], off, LFS_SEEK_SET) >= 0 => 1;
|
lfs_file_seek(&lfs, &file[0], off, LFS_SEEK_SET) => off;
|
||||||
lfs_file_write(&lfs, &file[0], buffer, size) => size;
|
lfs_file_write(&lfs, &file[0], buffer, size) => size;
|
||||||
lfs_file_seek(&lfs, &file[0], off, LFS_SEEK_SET) => off+size;
|
lfs_file_seek(&lfs, &file[0], off, LFS_SEEK_SET) => off;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "hedgehoghog", size) => 0;
|
memcmp(buffer, "hedgehoghog", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_SET) => off+size;
|
lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_SET) => 0;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "kittycatcat", size) => 0;
|
memcmp(buffer, "kittycatcat", size) => 0;
|
||||||
|
|
||||||
@@ -312,31 +312,29 @@ tests/test.py << TEST
|
|||||||
|
|
||||||
size = strlen("kittycatcat");
|
size = strlen("kittycatcat");
|
||||||
lfs_file_size(&lfs, &file[0]) => $LARGESIZE*size;
|
lfs_file_size(&lfs, &file[0]) => $LARGESIZE*size;
|
||||||
lfs_file_seek(&lfs, &file[0],
|
lfs_file_seek(&lfs, &file[0], ($LARGESIZE+$SMALLSIZE)*size,
|
||||||
($LARGESIZE+$SMALLSIZE)*size, LFS_SEEK_SET) => 0;
|
LFS_SEEK_SET) => ($LARGESIZE+$SMALLSIZE)*size;
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => 0;
|
lfs_file_read(&lfs, &file[0], buffer, size) => 0;
|
||||||
|
|
||||||
memcpy(buffer, "porcupineee", size);
|
memcpy(buffer, "porcupineee", size);
|
||||||
lfs_file_write(&lfs, &file[0], buffer, size) => size;
|
lfs_file_write(&lfs, &file[0], buffer, size) => size;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0],
|
lfs_file_seek(&lfs, &file[0], ($LARGESIZE+$SMALLSIZE)*size,
|
||||||
($LARGESIZE+$SMALLSIZE)*size, LFS_SEEK_SET) =>
|
LFS_SEEK_SET) => ($LARGESIZE+$SMALLSIZE)*size;
|
||||||
($LARGESIZE+$SMALLSIZE+1)*size;
|
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "porcupineee", size) => 0;
|
memcmp(buffer, "porcupineee", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0],
|
lfs_file_seek(&lfs, &file[0], $LARGESIZE*size,
|
||||||
$LARGESIZE*size, LFS_SEEK_SET) =>
|
LFS_SEEK_SET) => $LARGESIZE*size;
|
||||||
($LARGESIZE+$SMALLSIZE+1)*size;
|
|
||||||
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
lfs_file_read(&lfs, &file[0], buffer, size) => size;
|
||||||
memcmp(buffer, "\0\0\0\0\0\0\0\0\0\0\0", size) => 0;
|
memcmp(buffer, "\0\0\0\0\0\0\0\0\0\0\0", size) => 0;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0],
|
lfs_file_seek(&lfs, &file[0], -(($LARGESIZE+$SMALLSIZE)*size),
|
||||||
-(($LARGESIZE+$SMALLSIZE)*size), LFS_SEEK_CUR) => LFS_ERR_INVAL;
|
LFS_SEEK_CUR) => LFS_ERR_INVAL;
|
||||||
lfs_file_tell(&lfs, &file[0]) => ($LARGESIZE+1)*size;
|
lfs_file_tell(&lfs, &file[0]) => ($LARGESIZE+1)*size;
|
||||||
|
|
||||||
lfs_file_seek(&lfs, &file[0],
|
lfs_file_seek(&lfs, &file[0], -(($LARGESIZE+2*$SMALLSIZE)*size),
|
||||||
-(($LARGESIZE+2*$SMALLSIZE)*size), LFS_SEEK_END) => LFS_ERR_INVAL;
|
LFS_SEEK_END) => LFS_ERR_INVAL;
|
||||||
lfs_file_tell(&lfs, &file[0]) => ($LARGESIZE+1)*size;
|
lfs_file_tell(&lfs, &file[0]) => ($LARGESIZE+1)*size;
|
||||||
|
|
||||||
lfs_file_close(&lfs, &file[0]) => 0;
|
lfs_file_close(&lfs, &file[0]) => 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user