From 8aba03d25f3114be185a9e8955ade5630a810d1a Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Sun, 18 Mar 2018 20:36:48 -0500 Subject: [PATCH] WIP Fixed issue with modifying dir after append in update --- lfs.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lfs.c b/lfs.c index 79d664b..639245c 100644 --- a/lfs.c +++ b/lfs.c @@ -836,7 +836,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; } @@ -1820,8 +1825,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;