diff --git a/lfs.c b/lfs.c index 7520f2ea..901d712e 100644 --- a/lfs.c +++ b/lfs.c @@ -404,16 +404,20 @@ struct lfs_diskoff { // operations on global state static inline void lfs_gstate_xor(lfs_gstate_t *a, const lfs_gstate_t *b) { - for (int i = 0; i < 3; i++) { - ((uint32_t*)a)[i] ^= ((const uint32_t*)b)[i]; - } + a->tag ^= b->tag; + a->pair[0] ^= b->pair[0]; + a->pair[1] ^= b->pair[1]; } static inline bool lfs_gstate_iszero(const lfs_gstate_t *a) { - for (int i = 0; i < 3; i++) { - if (((uint32_t*)a)[i] != 0) { - return false; - } + if (a->tag != 0) { + return false; + } + if (a->pair[0] != 0) { + return false; + } + if (a->pair[1] != 0) { + return false; } return true; }