aboutsummaryrefslogtreecommitdiff
path: root/src/exact_value.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/exact_value.cpp')
-rw-r--r--src/exact_value.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/exact_value.cpp b/src/exact_value.cpp
index 42b22c8ef..f4d2e60de 100644
--- a/src/exact_value.cpp
+++ b/src/exact_value.cpp
@@ -71,7 +71,12 @@ HashKey hash_exact_value(ExactValue v) {
case ExactValue_String:
return hash_string(v.value_string);
case ExactValue_Integer:
- return hashing_proc(big_int_ptr(&v.value_integer), v.value_integer.len * gb_size_of(u64));
+ {
+ HashKey key = hashing_proc(big_int_ptr(&v.value_integer), v.value_integer.len * gb_size_of(u64));
+ u8 last = (u8)v.value_integer.neg;
+ key.key = (key.key ^ last) * 0x100000001b3ll;
+ return key;
+ }
case ExactValue_Float:
return hash_f64(v.value_float);
case ExactValue_Pointer: