X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=include%2Fwimlib%2Funaligned.h;fp=include%2Fwimlib%2Funaligned.h;h=5700e405713c292be8a464bbe8563f617e21102e;hp=473f5e2578f4b88e7907ae4466f7e26371506c22;hb=2c18108561c0c3a8076e1ae29d76ce372e0fcb34;hpb=bdd51aef6914cd585f86b0404ef5e8bb2c1c8eab diff --git a/include/wimlib/unaligned.h b/include/wimlib/unaligned.h index 473f5e25..5700e405 100644 --- a/include/wimlib/unaligned.h +++ b/include/wimlib/unaligned.h @@ -21,25 +21,25 @@ #ifndef _WIMLIB_UNALIGNED_H #define _WIMLIB_UNALIGNED_H +#include + #include "wimlib/compiler.h" #include "wimlib/endianness.h" #include "wimlib/types.h" #define DEFINE_UNALIGNED_TYPE(type) \ -struct type##_unaligned { \ - type v; \ -} _packed_attribute _may_alias_attribute; \ - \ static forceinline type \ load_##type##_unaligned(const void *p) \ { \ - return ((const struct type##_unaligned *)p)->v; \ + type v; \ + memcpy(&v, p, sizeof(v)); \ + return v; \ } \ \ static forceinline void \ -store_##type##_unaligned(type val, void *p) \ +store_##type##_unaligned(type v, void *p) \ { \ - ((struct type##_unaligned *)p)->v = val; \ + memcpy(p, &v, sizeof(v)); \ } DEFINE_UNALIGNED_TYPE(u16);