Fix #928 - Fix hashing of negative 0.

This commit is contained in:
Calvin Rose 2022-03-04 19:49:39 -06:00
parent 56ba1d9cd3
commit d7ea122cf7
2 changed files with 3 additions and 0 deletions

View File

@ -322,6 +322,7 @@ int32_t janet_hash(Janet x) {
uint64_t u;
} as;
as.d = janet_unwrap_number(x);
as.d = as.d == 0 ? 0 : as.d; /* normalize negative 0 */
uint32_t lo = (uint32_t)(as.u & 0xFFFFFFFF);
uint32_t hi = (uint32_t)(as.u >> 32);
uint32_t hilo = (hi ^ lo) * 2654435769u;

View File

@ -48,5 +48,7 @@
(assert (= (test) '(1 ())) "issue #919")
(assert (= (hash 0) (hash (* -1 0))) "hash -0 same as hash 0")
(end-suite)