summaryrefslogtreecommitdiff
path: root/lib/hash.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2004-08-02 22:49:34 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2004-08-02 22:49:34 +0000
commitd5905bb65347592b269cba71e783fce9930410a0 (patch)
treee29e9fe9d3772643b2e45cc9d3fc14d21bcb199e /lib/hash.c
parent28730b8b3673d381bfaab5da1b1abc7d62d77f85 (diff)
downloadcoreutils-d5905bb65347592b269cba71e783fce9930410a0.tar.xz
(hash_string): Rewrite to avoid cast.
Diffstat (limited to 'lib/hash.c')
-rw-r--r--lib/hash.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/hash.c b/lib/hash.c
index 945bb80f7..374c22681 100644
--- a/lib/hash.c
+++ b/lib/hash.c
@@ -1,7 +1,7 @@
/* hash - hashing table processing.
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software
- Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Software Foundation, Inc.
Written by Jim Meyering, 1992.
@@ -400,9 +400,10 @@ hash_string (const char *string, size_t n_buckets)
((Byte) + ROTATE_LEFT (Value, 7))
size_t value = 0;
+ unsigned char ch;
- for (; *string; string++)
- value = HASH_ONE_CHAR (value, (unsigned char) *string);
+ for (; (ch = *string); string++)
+ value = HASH_ONE_CHAR (value, ch);
return value % n_buckets;
# undef ROTATE_LEFT
@@ -420,9 +421,10 @@ size_t
hash_string (const char *string, size_t n_buckets)
{
size_t value = 0;
+ unsigned char ch;
- while (*string)
- value = (value * 31 + (unsigned char) *string++) % n_buckets;
+ for (; (ch = *string); string++)
+ value = (value * 31 + ch) % n_buckets;
return value;
}