This is a behavioral change, and I assume not intentional. In the original code, `p` is a `*u8` and therefore the offset is in bytes. In the new version, `p` is a `*T` and therefore the offset is in `sizeof::<T>()`.