* hash.c (any_hash): should return `long', because ruby assumes
  the hash value of the object id of an object is `long'.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2016-12-07 04:25:50 +00:00
Родитель 9db0b2d7ee
Коммит f2b6e9f05f
1 изменённых файлов: 3 добавлений и 3 удалений

6
hash.c
Просмотреть файл

@ -162,7 +162,7 @@ rb_dbl_long_hash(double d)
#endif
}
static inline st_index_t
static inline long
any_hash(VALUE a, st_index_t (*other_func)(VALUE))
{
VALUE hval;
@ -199,7 +199,7 @@ any_hash(VALUE a, st_index_t (*other_func)(VALUE))
}
out:
hnum <<= 1;
return (st_index_t)RSHIFT(hnum, 1);
return (long)RSHIFT(hnum, 1);
}
static st_index_t
@ -262,7 +262,7 @@ objid_hash(VALUE obj)
VALUE
rb_obj_hash(VALUE obj)
{
st_index_t hnum = any_hash(obj, objid_hash);
long hnum = any_hash(obj, objid_hash);
return ST2FIX(hnum);
}