1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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
This commit is contained in:
knu 2003-11-01 16:16:31 +00:00
parent 92160dc6d0
commit fe85bcd644
3 changed files with 19 additions and 4 deletions

View file

@ -1,3 +1,10 @@
Sun Nov 2 01:02:04 2003 Akinori MUSHA <knu@iDaemons.org>
* string.c (rb_str_hash): Update the HASH_PERL alternative hash
algorithm in sync with Perl 5.8.
* st.c (strhash): Ditto.
Sat Nov 1 18:21:09 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_ssl.c (ossl_ssl_peer_cert_chain): add new method

8
st.c
View file

@ -536,10 +536,14 @@ strhash(string)
register int val = 0;
while ((c = *string++) != '\0') {
val = val*33 + c;
val += c;
val += (val << 10);
val ^= (val >> 6);
}
val += (val << 3);
val ^= (val >> 11);
return val + (val>>5);
return val + (val << 15);
#else
register int val = 0;

View file

@ -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;