Fix qmake hash function to use XOR
authorRafael Roquetto <rafael.roquetto.qnx@kdab.com>
Tue, 24 Jul 2012 13:45:44 +0000 (15:45 +0200)
committerQt by Nokia <qt-info@nokia.com>
Wed, 25 Jul 2012 11:31:05 +0000 (13:31 +0200)
Use XOR instead of OR in order to avoid saturating all bits when computing the
hash value.

Change-Id: I50b1a044eb827239dae1c04732ca6a065f6233b4
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
qmake/cachekeys.h
qmake/generators/makefile.h

index c164304..da3aee1 100644 (file)
@@ -73,7 +73,7 @@ struct FixStringCacheKey
     }
     inline uint hashCode() const {
         if(!hash)
-            hash = qHash(string) | qHash(flags) /*| qHash(pwd)*/;
+            hash = qHash(string) ^ qHash(flags) /*^ qHash(pwd)*/;
         return hash;
     }
 };
@@ -98,7 +98,7 @@ struct FileInfoCacheKey
     }
     inline uint hashCode() const {
         if(!hash)
-            hash = qHash(file) /*| qHash(pwd)*/;
+            hash = qHash(file) /*^ qHash(pwd)*/;
         return hash;
     }
     inline bool isRelativePath(const QString &file) {
index af5a3eb..3a9bfc1 100644 (file)
@@ -68,7 +68,7 @@ struct ReplaceExtraCompilerCacheKey
     bool operator==(const ReplaceExtraCompilerCacheKey &f) const;
     inline uint hashCode() const {
         if(!hash)
-            hash = qHash(var) | qHash(in) | qHash(out) /*| qHash(pwd)*/;
+            hash = qHash(var) ^ qHash(in) ^ qHash(out) /*^ qHash(pwd)*/;
         return hash;
     }
 };