From 6f51dcc43f0a99854f0ef790aade4979c82b5272 Mon Sep 17 00:00:00 2001
From: dcaswell <dylan.caswell@ni.com>
Date: Thu, 5 Mar 2015 13:07:02 -0600
Subject: b200: Updated hashing algorithm for platform consistency

Now identical between 32- and 64-bit platforms.
---
 host/lib/usrp/b200/b200_iface.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

(limited to 'host/lib/usrp/b200')

diff --git a/host/lib/usrp/b200/b200_iface.cpp b/host/lib/usrp/b200/b200_iface.cpp
index 820090959..0f799e571 100644
--- a/host/lib/usrp/b200/b200_iface.cpp
+++ b/host/lib/usrp/b200/b200_iface.cpp
@@ -89,7 +89,7 @@ typedef boost::uint32_t hash_type;
  * Create a file hash
  * The hash will be used to identify the loaded firmware and fpga image
  * \param filename file used to generate hash value
- * \return hash value in a size_t type
+ * \return hash value in a uint32_t type
  */
 static hash_type generate_hash(const char *filename)
 {
@@ -101,13 +101,15 @@ static hash_type generate_hash(const char *filename)
         throw uhd::io_error(std::string("cannot open input file ") + filename);
     }
 
-    size_t hash = 0;
+    hash_type hash = 0;
 
     char ch;
     long long count = 0;
     while (file.get(ch)) {
         count++;
-        boost::hash_combine(hash, ch);
+        //hash algorithm derived from boost hash_combine
+        //http://www.boost.org/doc/libs/1_35_0/doc/html/boost/hash_combine_id241013.html
+        hash ^= ch + 0x9e3779b9 + (hash<<6) + (hash>>2);
     }
 
     if (count == 0){
-- 
cgit v1.2.3