diff --git a/src/strings.jl b/src/strings.jl index bed60f3..4cddbb7 100644 --- a/src/strings.jl +++ b/src/strings.jl @@ -4,8 +4,12 @@ struct PointerString <: AbstractString end function Base.hash(s::PointerString, h::UInt) - h += Base.memhash_seed - ccall(Base.memhash, UInt, (Ptr{UInt8}, Csize_t, UInt32), s.ptr, s.len, h % UInt32) + h + @static if isdefined(Base, :hash_bytes) + GC.@preserve s.ptr Base.hash_bytes(s.ptr, s.len, UInt64(h), Base.HASH_SECRET) % UInt + else + h += Base.memhash_seed + ccall(Base.memhash, UInt, (Ptr{UInt8}, Csize_t, UInt32), s.ptr, s.len, h % UInt32) + h + end end import Base: ==