summaryrefslogtreecommitdiffstats
path: root/package/busybox/busybox-1.14.0-unaligned-fix.patch
blob: 33ebd4a4a000638ad789228ba1352c611bccf73b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[PATCH] fix move_to_unaligned32() for !x86

get_unaligned() got changed into move_{from,to}_unaligned() in r24334, but
the temporary variabled used to make sure we can take the address of the
source argument for memcpy() got removed. Later on in r26068 dnsd.c got
changed to call move_to_unaligned with htons/htonl as source breaking
the build for !x86.

Fix it by reintroducing the temporary variable.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
 include/platform.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: busybox-1.14.0/include/platform.h
===================================================================
--- busybox-1.14.0.orig/include/platform.h
+++ busybox-1.14.0/include/platform.h
@@ -173,7 +173,7 @@
 /* performs reasonably well (gcc usually inlines memcpy here) */
 #define move_from_unaligned16(v, u16p) (memcpy(&(v), (u16p), 2))
 #define move_from_unaligned32(v, u32p) (memcpy(&(v), (u32p), 4))
-#define move_to_unaligned32(u32p, v)   (memcpy((u32p), &(v), 4))
+#define move_to_unaligned32(u32p, v)   do { uint32_t __t = (v); memcpy((u32p), &__t, 4); } while (0)
 #endif
 
 /* ---- Networking ------------------------------------------ */