The following code:
    uint32_t k;
    memcpy (&k, data, sizeof (k));
computes different data depending on platform endianness.

That causes test_xmmsv_serialize_coll_match test to fail
as collection order is serialized in wrong order.

Signed-off-by: Sergei Trofimovich <sly...@gentoo.org>
---
 src/lib/xmmstypes/xmmsv_dict.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/lib/xmmstypes/xmmsv_dict.c b/src/lib/xmmstypes/xmmsv_dict.c
index 5ebe4eb3..32533285 100644
--- a/src/lib/xmmstypes/xmmsv_dict.c
+++ b/src/lib/xmmstypes/xmmsv_dict.c
@@ -66,8 +66,10 @@ _xmmsv_dict_hash (const void *key, int len)
 
        while (len >= 4)
        {
-               uint32_t k;
-               memcpy (&k, data, sizeof (k));
+               uint32_t k = data [0]
+                       | data [1] << 8
+                       | data [2] << 16
+                       | data [3] << 24;
 
                k *= m;
                k ^= k >> r;
-- 
2.13.3


--
_______________________________________________
Xmms2-devel mailing list
Xmms2-devel@lists.xmms2.org
https://lists.xmms2.org/cgi-bin/mailman/listinfo/xmms2-devel

Reply via email to