summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-01-18 06:09:05 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-01-18 06:09:05 +0000
commite5ed1780afa9a5f29da7c63ca2b7d9c66f6936aa (patch)
tree02bb807e93fa0b9e53167165439d507c432b199b /array.c
parentdde62bcd2efbb3825d982326896ab774e73e4218 (diff)
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.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/array.c b/array.c
index b04fa83780..8752c2deef 100644
--- a/array.c
+++ b/array.c
@@ -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);