From fe85bcd644d60f7665ed2688b91c28c3def01526 Mon Sep 17 00:00:00 2001 From: knu Date: Sat, 1 Nov 2003 16:16:31 +0000 Subject: * string.c (rb_str_hash): Update the HASH_PERL alternative hash algorithm in sync with Perl 5.8. * st.c (strhash): Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- string.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'string.c') diff --git a/string.c b/string.c index 29c3cea63b..2d991f6e53 100644 --- a/string.c +++ b/string.c @@ -744,9 +744,13 @@ rb_str_hash(str) } #elif HASH_PERL while (len--) { - key = key*33 + *p++; + key += *p++; + key += (key << 10); + key ^= (key >> 6); } - key = key + (key>>5); + key += (key << 3); + key ^= (key >> 11); + key += (key << 15); #else while (len--) { key = key*65599 + *p; -- cgit v1.2.3