diff options
| author | Răzvan Cosmin Rădulescu | 2016-10-04 10:57:16 +0200 |
|---|---|---|
| committer | Rémi Verschelde | 2016-10-17 20:48:15 +0200 |
| commit | 04255541a0dcd4fdeb7028707ab5907785ea249d (patch) | |
| tree | dd4f881da23cd840f0b976971fbcedfe1daba204 | |
| parent | 17edff2f84c52d7f26fc62787bf25ba8e9758124 (diff) | |
| download | godot-04255541a0dcd4fdeb7028707ab5907785ea249d.tar.gz godot-04255541a0dcd4fdeb7028707ab5907785ea249d.tar.zst godot-04255541a0dcd4fdeb7028707ab5907785ea249d.zip | |
Fixes hash float negative 0 problem
Before this was giving an error:
var a = {Vector2(1, 0): 5, Vector2(-1, 0): 7}
print(a)
print(a[Vector2(1, 0)])
print(a[-Vector2(1, 0)])
This simple commit fixes the issue.
(cherry picked from commit 9ad0850301045e0d7fd243340e807fb2c9f736de)
| -rw-r--r-- | core/hashfuncs.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/core/hashfuncs.h b/core/hashfuncs.h index a917ee5ed..6c029a345 100644 --- a/core/hashfuncs.h +++ b/core/hashfuncs.h @@ -74,7 +74,10 @@ static inline uint32_t hash_djb2_one_float(float p_in,uint32_t p_prev=5381) { float f; uint32_t i; } u; - u.f=p_in; + + // handle -0 case + if (p_in==0.0f) u.f=0.0f; + else u.f=p_in; return ((p_prev<<5)+p_prev)+u.i; } |
