Updated hashing function
authorRobert Pengelly <robertapengelly@hotmail.com>
Fri, 20 Dec 2024 15:53:48 +0000 (15:53 +0000)
committerRobert Pengelly <robertapengelly@hotmail.com>
Fri, 20 Dec 2024 15:53:48 +0000 (15:53 +0000)
hashtab.c

index b6863a546186a875b6fa9d11d6576b26b415a18f..9ddaf7e83a6f4080f1d1983f7ffccc50a04a1121 100644 (file)
--- a/hashtab.c
+++ b/hashtab.c
@@ -98,10 +98,12 @@ static struct hashtab_entry *find_entry (struct hashtab_entry *entries, unsigned
 static unsigned int hash_string (const void *p, unsigned int length) {
 
     unsigned char *str = (unsigned char *) p;
-    unsigned int i, result = 0;
+    unsigned int i;
+    
+    unsigned int result = 0;
     
     for (i = 0; i < length; i++) {
-        result = (((unsigned int) str[i]) << 12) + (result >> 6) + result + (result >> 3) + (((unsigned int) str[i]) << 8) - result;
+        result = (((unsigned short) str[i]) << 4) + (result >> 9) + result + (result >> 3) + (((unsigned short) str[i]) << 2) - (result << 24);
     }
     
     return result;