Commit 1e272a6b authored by Salvatore Sanfilippo's avatar Salvatore Sanfilippo
Browse files

ARM: Fix 64 bit unaligned access in MurmurHash64A().

parent f917e0da
...@@ -206,4 +206,10 @@ void setproctitle(const char *fmt, ...); ...@@ -206,4 +206,10 @@ void setproctitle(const char *fmt, ...);
#endif #endif
#endif #endif
/* Make sure we can test for ARM just checking for __arm__, since sometimes
* __arm is defined but __arm__ is not. */
#if defined(__arm) && !defined(__arm__)
#define __arm__
#endif
#endif #endif
...@@ -401,7 +401,11 @@ uint64_t MurmurHash64A (const void * key, int len, unsigned int seed) { ...@@ -401,7 +401,11 @@ uint64_t MurmurHash64A (const void * key, int len, unsigned int seed) {
uint64_t k; uint64_t k;
#if (BYTE_ORDER == LITTLE_ENDIAN) #if (BYTE_ORDER == LITTLE_ENDIAN)
#ifdef __arm__
memcpy(&k,data,sizeof(uint64_t));
#else
k = *((uint64_t*)data); k = *((uint64_t*)data);
#endif
#else #else
k = (uint64_t) data[0]; k = (uint64_t) data[0];
k |= (uint64_t) data[1] << 8; k |= (uint64_t) data[1] << 8;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment