From 45d02e5750557a7646311c383eb6941bf429a187 Mon Sep 17 00:00:00 2001 From: Tim Nordell Date: Sun, 13 Jun 2021 21:09:47 -0500 Subject: [PATCH] fixup for 5c87b6864 Add in missing global state xor for each sub page within a folder. --- lfs.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lfs.c b/lfs.c index cd33e29..9b9eb9b 100644 --- a/lfs.c +++ b/lfs.c @@ -3194,6 +3194,7 @@ static int lfs_dir_prep_removal(lfs_t *lfs, struct lfs_mlist *dir, lfs_mdir_t *newcwd, uint16_t newid, lfs_block_t *pair, lfs_gstate_t *tmp_gstate) { + lfs_gstate_t split_gstate; lfs_stag_t res = lfs_dir_get(lfs, newcwd, LFS_MKTAG(0x700, 0x3ff, 0), LFS_MKTAG(LFS_TYPE_STRUCT, newid, 8), pair); if (res < 0) { @@ -3201,6 +3202,8 @@ static int lfs_dir_prep_removal(lfs_t *lfs, struct lfs_mlist *dir, } lfs_pair_fromle32(pair); + memset(tmp_gstate, 0, sizeof(*tmp_gstate)); + int err = lfs_dir_fetch(lfs, &dir->m, pair); if (err) { return err; @@ -3224,7 +3227,8 @@ static int lfs_dir_prep_removal(lfs_t *lfs, struct lfs_mlist *dir, } // Before we fetch the next block, update our fetched gstate xor - lfs_dir_getgstate(lfs, &dir->m, tmp_gstate); + lfs_dir_getgstate(lfs, &dir->m, &split_gstate); + lfs_gstate_xor(tmp_gstate, &split_gstate); err = lfs_dir_fetch(lfs, &dir->m, dir->m.tail); if (err) {