summaryrefslogtreecommitdiffstats
path: root/src/hash_map.h
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2013-07-08 17:47:57 (GMT)
committerMatthew Dempsky <mdempsky@google.com>2013-07-08 17:49:49 (GMT)
commite0e12debf82124012ba84e13fe6662c812bba8b1 (patch)
treefa5e8701d0151ed38004e0c61fbd3532bbc2e98e /src/hash_map.h
parent1f7fa18dea3a57653811f75072871da08d1cff7b (diff)
downloadNinja-e0e12debf82124012ba84e13fe6662c812bba8b1.zip
Ninja-e0e12debf82124012ba84e13fe6662c812bba8b1.tar.gz
Ninja-e0e12debf82124012ba84e13fe6662c812bba8b1.tar.bz2
Fix murmur hash implementations to work on strict alignment
architectures like OpenBSD/mips64el and OpenBSD/hppa64.
Diffstat (limited to 'src/hash_map.h')
-rw-r--r--src/hash_map.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/hash_map.h b/src/hash_map.h
index 076f6c0..919b6fc 100644
--- a/src/hash_map.h
+++ b/src/hash_map.h
@@ -15,6 +15,7 @@
#ifndef NINJA_MAP_H_
#define NINJA_MAP_H_
+#include <string.h>
#include "string_piece.h"
// MurmurHash2, by Austin Appleby
@@ -26,7 +27,8 @@ unsigned int MurmurHash2(const void* key, size_t len) {
unsigned int h = seed ^ len;
const unsigned char * data = (const unsigned char *)key;
while (len >= 4) {
- unsigned int k = *(unsigned int *)data;
+ unsigned int k;
+ memcpy(&k, data, sizeof k);
k *= m;
k ^= k >> r;
k *= m;