Merge pull request #1084 from elupus/fix/packing

fix: avoid assuming struct packing
This commit is contained in:
Christopher Haster
2025-03-20 01:26:11 -05:00
committed by GitHub

15
lfs.c
View File

@ -404,18 +404,15 @@ struct lfs_diskoff {
// operations on global state // operations on global state
static inline void lfs_gstate_xor(lfs_gstate_t *a, const lfs_gstate_t *b) { static inline void lfs_gstate_xor(lfs_gstate_t *a, const lfs_gstate_t *b) {
for (int i = 0; i < 3; i++) { a->tag ^= b->tag;
((uint32_t*)a)[i] ^= ((const uint32_t*)b)[i]; a->pair[0] ^= b->pair[0];
} a->pair[1] ^= b->pair[1];
} }
static inline bool lfs_gstate_iszero(const lfs_gstate_t *a) { static inline bool lfs_gstate_iszero(const lfs_gstate_t *a) {
for (int i = 0; i < 3; i++) { return a->tag == 0
if (((uint32_t*)a)[i] != 0) { && a->pair[0] == 0
return false; && a->pair[1] == 0;
}
}
return true;
} }
#ifndef LFS_READONLY #ifndef LFS_READONLY