diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 56c9c585..e28afe80 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -13,6 +13,7 @@ Bug Fixes * Installation doesn't always fall back to no cython in Windows (PYTHON-763) * Avoid to replace a connection that is supposed to shutdown (PYTHON-772) * request_ids may not be returned to the pool (PYTHON-739) +* Fix murmur3 on big-endian systems (PYTHON-653) Other ----- diff --git a/cassandra/murmur3.py b/cassandra/murmur3.py index 61180c01..7c8d641b 100644 --- a/cassandra/murmur3.py +++ b/cassandra/murmur3.py @@ -7,7 +7,9 @@ def body_and_tail(data): nblocks = l // 16 tail = l % 16 if nblocks: - return struct.unpack_from('qq' * nblocks, data), struct.unpack_from('b' * tail, data, -tail), l + # we use '<', specifying little-endian byte order for data bigger than + # a byte so behavior is the same on little- and big-endian platforms + return struct.unpack_from('<' + ('qq' * nblocks), data), struct.unpack_from('b' * tail, data, -tail), l else: return tuple(), struct.unpack_from('b' * tail, data, -tail), l