Bug #13376 ยป 0001-hash.c-any_hash-make-static-symbol-hash-non-determin.patch
hash.c | ||
---|---|---|
if (a == Qundef) return 0;
|
||
if (STATIC_SYM_P(a)) {
|
||
hnum = a >> (RUBY_SPECIAL_SHIFT + ID_SCOPE_SHIFT);
|
||
hnum = rb_hash_start(hnum);
|
||
goto out;
|
||
}
|
||
else if (FLONUM_P(a)) {
|
test/ruby/test_symbol.rb | ||
---|---|---|
assert_equal str, str.to_sym.to_s
|
||
assert_not_predicate(str, :frozen?, bug11721)
|
||
end
|
||
def test_hash_nondeterministic
|
||
ruby = EnvUtil.rubybin
|
||
refute_equal `#{ruby} -e 'puts :foo.hash'`, `#{ruby} -e 'puts :foo.hash'`,
|
||
'[ruby-core:80430] [Bug #13376]'
|
||
sym = "dynsym_#{Random.rand(10000)}_#{Time.now}"
|
||
refute_equal `#{ruby} -e 'puts #{sym.inspect}.to_sym.hash'`,
|
||
`#{ruby} -e 'puts #{sym.inspect}.to_sym.hash'`
|
||
end
|
||
end
|
||
-
|