Issue #20162: Fix an alignment issue in the siphash24() hash function which
authorVictor Stinner <victor.stinner@gmail.com>
Sat, 1 Feb 2014 02:38:56 +0000 (03:38 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Sat, 1 Feb 2014 02:38:56 +0000 (03:38 +0100)
caused a crash on PowerPC 64-bit (ppc64).

Misc/NEWS
Python/pyhash.c

index 680b66280aea250349bb49d0d480e370185ee08a..78b6bea166366f24bb83b66591782f0179808654 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@ Release date: 2014-02-09
 Core and Builtins
 -----------------
 
+- Issue #20162: Fix an alignment issue in the siphash24() hash function which
+  caused a crash on PowerPC 64-bit (ppc64).
+
 Library
 -------
 
index 19aeeb7143498b12460c4cfed972713209a8aa01..97cb54759b6183ead7ee41935f21db2899987e7d 100644 (file)
@@ -399,7 +399,7 @@ siphash24(const void *src, Py_ssize_t src_sz) {
         case 7: pt[6] = m[6];
         case 6: pt[5] = m[5];
         case 5: pt[4] = m[4];
-        case 4: *((PY_UINT32_T*)&pt[0]) = *((PY_UINT32_T*)&m[0]); break;
+        case 4: Py_MEMCPY(pt, m, sizeof(PY_UINT32_T)); break;
         case 3: pt[2] = m[2];
         case 2: pt[1] = m[1];
         case 1: pt[0] = m[0];