mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-04 02:57:46 +00:00
src/runtime: strengthen hash function for structs and arrays
Using `|` to combine hash values will slowly turn every bit on. Hashes combined with `^` with keep more entropy.
This commit is contained in:
@@ -391,13 +391,13 @@ func hashmapInterfaceHash(itf interface{}) uint32 {
|
||||
case reflect.Array:
|
||||
var hash uint32
|
||||
for i := 0; i < x.Len(); i++ {
|
||||
hash |= hashmapInterfaceHash(valueInterfaceUnsafe(x.Index(i)))
|
||||
hash ^= hashmapInterfaceHash(valueInterfaceUnsafe(x.Index(i)))
|
||||
}
|
||||
return hash
|
||||
case reflect.Struct:
|
||||
var hash uint32
|
||||
for i := 0; i < x.NumField(); i++ {
|
||||
hash |= hashmapInterfaceHash(valueInterfaceUnsafe(x.Field(i)))
|
||||
hash ^= hashmapInterfaceHash(valueInterfaceUnsafe(x.Field(i)))
|
||||
}
|
||||
return hash
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user