* string.c (rb_str_hash_m): st_index_t is not guaranteed as the same

size with int, and of course also not guaranteed the value can be
  Fixnum.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56320 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
usa 2016-10-01 17:06:21 +00:00
parent 318ecff41e
commit 7a44019031
2 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,9 @@
Sun Oct 2 02:04:12 2016 NAKAMURA Usaku <usa@ruby-lang.org>
* string.c (rb_str_hash_m): st_index_t is not guaranteed as the same
size with int, and of course also not guaranteed the value can be
Fixnum.
Sun Oct 2 02:03:06 2016 NAKAMURA Usaku <usa@ruby-lang.org>
* numeric.c (rb_fix2str): detect unnormalized Fixnum value.

View File

@ -2963,7 +2963,13 @@ static VALUE
rb_str_hash_m(VALUE str)
{
st_index_t hval = rb_str_hash(str);
return INT2FIX(hval);
#if SIZEOF_LONG == SIZEOF_VOIDP
return ULONG2NUM(hval);
#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP
return ULL2NUM(hval);
#else
# error unsupported platform
#endif
}
#define lesser(a,b) (((a)>(b))?(b):(a))