mirror of
https://github.com/eledio-devices/thirdparty-littlefs.git
synced 2025-11-01 08:48:31 +01:00
Fixed error check when truncating files to larger size
This commit is contained in:
2
lfs.c
2
lfs.c
@@ -1694,7 +1694,7 @@ int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) {
|
|||||||
// flush+seek if not already at end
|
// flush+seek if not already at end
|
||||||
if (file->pos != oldsize) {
|
if (file->pos != oldsize) {
|
||||||
int err = lfs_file_seek(lfs, file, 0, SEEK_END);
|
int err = lfs_file_seek(lfs, file, 0, SEEK_END);
|
||||||
if (err) {
|
if (err < 0) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,10 +13,12 @@ TEST
|
|||||||
|
|
||||||
truncate_test() {
|
truncate_test() {
|
||||||
STARTSIZES="$1"
|
STARTSIZES="$1"
|
||||||
HOTSIZES="$2"
|
STARTSEEKS="$2"
|
||||||
COLDSIZES="$3"
|
HOTSIZES="$3"
|
||||||
|
COLDSIZES="$4"
|
||||||
tests/test.py << TEST
|
tests/test.py << TEST
|
||||||
static const lfs_off_t startsizes[] = {$STARTSIZES};
|
static const lfs_off_t startsizes[] = {$STARTSIZES};
|
||||||
|
static const lfs_off_t startseeks[] = {$STARTSEEKS};
|
||||||
static const lfs_off_t hotsizes[] = {$HOTSIZES};
|
static const lfs_off_t hotsizes[] = {$HOTSIZES};
|
||||||
|
|
||||||
lfs_mount(&lfs, &cfg) => 0;
|
lfs_mount(&lfs, &cfg) => 0;
|
||||||
@@ -33,6 +35,11 @@ tests/test.py << TEST
|
|||||||
}
|
}
|
||||||
lfs_file_size(&lfs, &file[0]) => startsizes[i];
|
lfs_file_size(&lfs, &file[0]) => startsizes[i];
|
||||||
|
|
||||||
|
if (startseeks[i] != startsizes[i]) {
|
||||||
|
lfs_file_seek(&lfs, &file[0],
|
||||||
|
startseeks[i], LFS_SEEK_SET) => startseeks[i];
|
||||||
|
}
|
||||||
|
|
||||||
lfs_file_truncate(&lfs, &file[0], hotsizes[i]) => 0;
|
lfs_file_truncate(&lfs, &file[0], hotsizes[i]) => 0;
|
||||||
lfs_file_size(&lfs, &file[0]) => hotsizes[i];
|
lfs_file_size(&lfs, &file[0]) => hotsizes[i];
|
||||||
|
|
||||||
@@ -107,18 +114,21 @@ TEST
|
|||||||
|
|
||||||
echo "--- Cold shrinking truncate ---"
|
echo "--- Cold shrinking truncate ---"
|
||||||
truncate_test \
|
truncate_test \
|
||||||
|
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE" \
|
||||||
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE" \
|
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE" \
|
||||||
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE" \
|
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE" \
|
||||||
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE"
|
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE"
|
||||||
|
|
||||||
echo "--- Cold expanding truncate ---"
|
echo "--- Cold expanding truncate ---"
|
||||||
truncate_test \
|
truncate_test \
|
||||||
|
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE" \
|
||||||
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE" \
|
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE" \
|
||||||
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE" \
|
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE" \
|
||||||
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE"
|
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE"
|
||||||
|
|
||||||
echo "--- Warm shrinking truncate ---"
|
echo "--- Warm shrinking truncate ---"
|
||||||
truncate_test \
|
truncate_test \
|
||||||
|
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE" \
|
||||||
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE" \
|
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE" \
|
||||||
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE" \
|
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE" \
|
||||||
" 0, 0, 0, 0, 0"
|
" 0, 0, 0, 0, 0"
|
||||||
@@ -126,6 +136,21 @@ truncate_test \
|
|||||||
echo "--- Warm expanding truncate ---"
|
echo "--- Warm expanding truncate ---"
|
||||||
truncate_test \
|
truncate_test \
|
||||||
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE" \
|
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE" \
|
||||||
|
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE" \
|
||||||
|
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE" \
|
||||||
|
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE"
|
||||||
|
|
||||||
|
echo "--- Mid-file shrinking truncate ---"
|
||||||
|
truncate_test \
|
||||||
|
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE" \
|
||||||
|
" $LARGESIZE, $LARGESIZE, $LARGESIZE, $LARGESIZE, $LARGESIZE" \
|
||||||
|
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE" \
|
||||||
|
" 0, 0, 0, 0, 0"
|
||||||
|
|
||||||
|
echo "--- Mid-file expanding truncate ---"
|
||||||
|
truncate_test \
|
||||||
|
" 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE, 2*$LARGESIZE" \
|
||||||
|
" 0, 0, $SMALLSIZE, $MEDIUMSIZE, $LARGESIZE" \
|
||||||
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE" \
|
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE" \
|
||||||
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE"
|
"2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE, 2*$LARGESIZE"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user