]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Undefined: avoid shift warning in murmurhash
authorAnders Björklund <anders@psqr.se>
Sun, 13 Nov 2016 15:51:46 +0000 (16:51 +0100)
committerJoel Rosdahl <joel@rosdahl.net>
Sun, 12 Feb 2017 13:57:13 +0000 (14:57 +0100)
murmurhashneutral2.c:18:16: runtime error: left shift of 169 by 24 places cannot be represented in type 'int'

murmurhashneutral2.c

index b568af65744ec1b552d2352759128ae1cb869167..53319dfb658bdf439b9e7f9a00c1c21bdeda9bd8 100644 (file)
@@ -13,9 +13,9 @@ murmurhashneutral2(const void *key, int len, unsigned int seed)
 
        while (len >= 4) {
                unsigned int k = data[0];
-               k |= data[1] << 8;
-               k |= data[2] << 16;
-               k |= data[3] << 24;
+               k |= ((unsigned int) data[1]) << 8;
+               k |= ((unsigned int) data[2]) << 16;
+               k |= ((unsigned int) data[3]) << 24;
 
                k *= m;
                k ^= k >> r;
@@ -30,9 +30,9 @@ murmurhashneutral2(const void *key, int len, unsigned int seed)
 
        switch (len)
        {
-       case 3: h ^= data[2] << 16;
-       case 2: h ^= data[1] << 8;
-       case 1: h ^= data[0];
+       case 3: h ^= ((unsigned int) data[2]) << 16;
+       case 2: h ^= ((unsigned int) data[1]) << 8;
+       case 1: h ^= ((unsigned int) data[0]);
                h *= m;
        };