diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-01-18 06:09:05 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-01-18 06:09:05 +0000 |
commit | e5ed1780afa9a5f29da7c63ca2b7d9c66f6936aa (patch) | |
tree | 02bb807e93fa0b9e53167165439d507c432b199b /array.c | |
parent | dde62bcd2efbb3825d982326896ab774e73e4218 (diff) | |
download | ruby-e5ed1780afa9a5f29da7c63ca2b7d9c66f6936aa.tar.gz |
2000-01-18
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@607 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'array.c')
-rw-r--r-- | array.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -1301,11 +1301,12 @@ rb_ary_hash(ary) VALUE ary; { long i; - int h; + int n, h; h = RARRAY(ary)->len; for (i=0; i<RARRAY(ary)->len; i++) { - int n = rb_hash(RARRAY(ary)->ptr[i]); + h = (h<<1) | (h<0 ? 1 : 0); + n = rb_hash(RARRAY(ary)->ptr[i]); h ^= NUM2LONG(n); } return INT2FIX(h); |