The bug was added in #189098. Both functions that I added/changed assumed little-endian host memory layout when reading/writing non-power-of-two byte sizes (3, 5, 6, 7). On big-endian hosts (SPARC, s390x), memcpy copies bytes into the MSB end of a uint64_t, leaving the value in the wrong bit position. Fix by offsetting the memcpy/write pointer to always target the LSB bytes.
7.9 KiB
7.9 KiB