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

force fixable

* complex.c (nucomp_hash): force hash values fixable.
  [ruby-core:85224] [Bug #14420]

* rational.c (nurat_hash): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62107 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2018-01-30 05:48:28 +00:00
parent 5af43b1ec2
commit 3f7221ad3d
4 changed files with 11 additions and 5 deletions

View file

@ -1253,7 +1253,7 @@ nucomp_hash(VALUE self)
n = rb_hash(dat->imag); n = rb_hash(dat->imag);
h[1] = NUM2LONG(n); h[1] = NUM2LONG(n);
v = rb_memhash(h, sizeof(h)); v = rb_memhash(h, sizeof(h));
return LONG2FIX(v); return ST2FIX(v);
} }
/* :nodoc: */ /* :nodoc: */

View file

@ -1783,7 +1783,7 @@ nurat_hash(VALUE self)
n = rb_hash(dat->den); n = rb_hash(dat->den);
h[1] = NUM2LONG(n); h[1] = NUM2LONG(n);
v = rb_memhash(h, sizeof(h)); v = rb_memhash(h, sizeof(h));
return LONG2FIX(v); return ST2FIX(v);
} }
static VALUE static VALUE

View file

@ -48,8 +48,12 @@ class Complex_Test < Test::Unit::TestCase
end end
def test_hash def test_hash
assert_kind_of(Integer, Complex(1,2).hash) h = Complex(1,2).hash
assert_kind_of(Integer, Complex(1.0,2.0).hash) assert_kind_of(Integer, h)
assert_nothing_raised {h.to_s}
h = Complex(1.0,2.0).hash
assert_kind_of(Integer, h)
assert_nothing_raised {h.to_s}
h = {} h = {}
h[Complex(0)] = 0 h[Complex(0)] = 0

View file

@ -42,7 +42,9 @@ class Rational_Test < Test::Unit::TestCase
end end
def test_hash def test_hash
assert_kind_of(Integer, Rational(1,2).hash) h = Rational(1,2).hash
assert_kind_of(Integer, h)
assert_nothing_raised {h.to_s}
h = {} h = {}
h[Rational(0)] = 0 h[Rational(0)] = 0