busybox: 1.14.0 fix for move_to_unaligned32 / dnsd.c on !x86

This commit is contained in:
Peter Korsgaard 2009-04-17 18:17:33 +00:00
parent 23795ec71f
commit 40367aa404
1 changed files with 28 additions and 0 deletions

View File

@ -0,0 +1,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 ------------------------------------------ */