WIP Fixed issue with modifying dir after append in update

This commit is contained in:
Christopher Haster
2018-03-18 20:36:48 -05:00
parent 689159e31d
commit 7ad2d58ed0

12
lfs.c
View File

@@ -846,7 +846,12 @@ static int lfs_dir_update(lfs_t *lfs, lfs_dir_t *dir,
}
// remove old entry
err = lfs_dir_remove(lfs, dir, &oldentry);
err = lfs_dir_fetch(lfs, &olddir, olddir.pair);
if (err) {
return err;
}
err = lfs_dir_remove(lfs, &olddir, &oldentry);
if (err) {
return err;
}
@@ -1830,8 +1835,9 @@ lfs_ssize_t lfs_file_write(lfs_t *lfs, lfs_file_t *file,
// TODO combine with block allocation?
// TODO need to move out if no longer fits in block also
// TODO store INLINE_MAX in superblock?
if ((file->pos + nsize >= LFS_INLINE_MAX) ||
(file->pos + nsize >= lfs->cfg->read_size)) {
if ((file->flags & LFS_F_INLINE) && (
(file->pos + nsize >= LFS_INLINE_MAX) ||
(file->pos + nsize >= lfs->cfg->read_size))) {
int err = lfs_file_relocate(lfs, file);
if (err) {
file->flags |= LFS_F_ERRED;