Browse Source

core: avoid SIGBUS on 32-bit Android

Daniele Bartolini 2 năm trước cách đây
mục cha
commit
ed7a3833d0
1 tập tin đã thay đổi với 6 bổ sung0 xóa
  1. 6 0
      src/core/murmur.cpp

+ 6 - 0
src/core/murmur.cpp

@@ -4,6 +4,7 @@
  */
  */
 
 
 #include "core/murmur.h"
 #include "core/murmur.h"
+#include <string.h>
 
 
 namespace crown
 namespace crown
 {
 {
@@ -75,7 +76,12 @@ u64 murmur64(const void *key, u32 len, u64 seed)
 	const u64 *end = data + (len/8);
 	const u64 *end = data + (len/8);
 
 
 	while (data != end) {
 	while (data != end) {
+#if CROWN_PLATFORM_ANDROID && CROWN_ARCH_32BIT
+		u64 k;
+		memcpy(&k, (const unsigned char *)data++, sizeof(k));
+#else
 		u64 k = *data++;
 		u64 k = *data++;
+#endif
 
 
 		k *= m;
 		k *= m;
 		k ^= k >> r;
 		k ^= k >> r;