diff --git a/Python/pyhash.c b/Python/pyhash.c
index 9e6e594..6fc12fd 100644
--- a/Python/pyhash.c
+++ b/Python/pyhash.c
@@ -366,7 +366,7 @@
 static uint64_t
 siphash24(uint64_t k0, uint64_t k1, const void *src, Py_ssize_t src_sz) {
     uint64_t b = (uint64_t)src_sz << 56;
-    const uint64_t *in = (uint64_t*)src;
+    const uint8_t *in = (uint8_t*)src;
 
     uint64_t v0 = k0 ^ 0x736f6d6570736575ULL;
     uint64_t v1 = k1 ^ 0x646f72616e646f6dULL;
@@ -375,12 +375,13 @@
 
     uint64_t t;
     uint8_t *pt;
-    uint8_t *m;
 
     while (src_sz >= 8) {
-        uint64_t mi = _le64toh(*in);
-        in += 1;
-        src_sz -= 8;
+        uint64_t mi;
+        memcpy(&mi, in, sizeof(mi));
+        mi = _le64toh(mi);
+        in += sizeof(mi);
+        src_sz -= sizeof(mi);
         v3 ^= mi;
         DOUBLE_ROUND(v0,v1,v2,v3);
         v0 ^= mi;
@@ -388,15 +389,14 @@
 
     t = 0;
     pt = (uint8_t *)&t;
-    m = (uint8_t *)in;
     switch (src_sz) {
-        case 7: pt[6] = m[6]; /* fall through */
-        case 6: pt[5] = m[5]; /* fall through */
-        case 5: pt[4] = m[4]; /* fall through */
-        case 4: memcpy(pt, m, sizeof(uint32_t)); break;
-        case 3: pt[2] = m[2]; /* fall through */
-        case 2: pt[1] = m[1]; /* fall through */
-        case 1: pt[0] = m[0]; /* fall through */
+        case 7: pt[6] = in[6]; /* fall through */
+        case 6: pt[5] = in[5]; /* fall through */
+        case 5: pt[4] = in[4]; /* fall through */
+        case 4: memcpy(pt, in, sizeof(uint32_t)); break;
+        case 3: pt[2] = in[2]; /* fall through */
+        case 2: pt[1] = in[1]; /* fall through */
+        case 1: pt[0] = in[0]; /* fall through */
     }
     b |= _le64toh(t);
 
