Stir the hash value more with encoding index
This commit is contained in:
parent
2f595c744e
commit
ab7f54688b
7
string.c
7
string.c
@ -3586,11 +3586,12 @@ rb_str_prepend_multi(int argc, VALUE *argv, VALUE str)
|
||||
st_index_t
|
||||
rb_str_hash(VALUE str)
|
||||
{
|
||||
st_index_t h = rb_memhash((const void *)RSTRING_PTR(str), RSTRING_LEN(str));
|
||||
int e = RSTRING_LEN(str) ? ENCODING_GET(str) : 0;
|
||||
if (e && is_ascii_string(str)) {
|
||||
e = 0;
|
||||
if (e && !is_ascii_string(str)) {
|
||||
h = rb_hash_end(rb_hash_uint32(h, (uint32_t)e));
|
||||
}
|
||||
return rb_memhash((const void *)RSTRING_PTR(str), RSTRING_LEN(str)) ^ e;
|
||||
return h;
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -1345,6 +1345,8 @@ CODE
|
||||
bug9172 = '[ruby-core:58658] [Bug #9172]'
|
||||
assert_not_equal(S("sub-setter").hash, S("discover").hash, bug9172)
|
||||
assert_equal(S("").hash, S("".encode(Encoding::UTF_32BE)).hash)
|
||||
h1, h2 = ["\x80", "\x81"].map {|c| c.b.hash ^ c.hash}
|
||||
assert_not_equal(h1, h2)
|
||||
end
|
||||
|
||||
def test_hex
|
||||
|
Loading…
x
Reference in New Issue
Block a user