From 7186723f81f42b56be44709c4aa6f178553ce2dc Mon Sep 17 00:00:00 2001 From: Homer Hsing Date: Fri, 14 Sep 2012 10:06:39 +0800 Subject: [PATCH] Reduce hash value collision probability in src/main.c Original code use "hash_value = *name++", which may produce hash value collision for word permutations like "abc", "bac" and "cba". --- assembler/src/main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/assembler/src/main.c b/assembler/src/main.c index 30c9018..d16d271 100644 --- a/assembler/src/main.c +++ b/assembler/src/main.c @@ -78,10 +78,10 @@ static void usage(void) static int hash(char *name) { - int ret = 0; + unsigned ret = 0; while(*name) - ret += *name++; - return ret%HASHSZ; + ret = (ret << 1) + (*name++); + return ret % HASHSZ; } struct declared_register *find_register(char *name) -- 2.7.4