Merge pull request #8393 from hpvb/fix-8081
Correct Variant::hash_compare()
This commit is contained in:
commit
6871ec708f
2 changed files with 1 additions and 19 deletions
|
@ -81,24 +81,6 @@ static inline uint32_t hash_one_uint64(const uint64_t p_int) {
|
|||
return (int)v;
|
||||
}
|
||||
|
||||
static inline uint32_t hash_djb2_one_float(float p_in, uint32_t p_prev = 5381) {
|
||||
union {
|
||||
float f;
|
||||
uint32_t i;
|
||||
} u;
|
||||
|
||||
// Normalize +/- 0.0 and NaN values so they hash the same.
|
||||
if (p_in == 0.0f)
|
||||
u.f = 0.0;
|
||||
else if (Math::is_nan(p_in))
|
||||
u.f = Math_NAN;
|
||||
else
|
||||
u.f = p_in;
|
||||
|
||||
return ((p_prev << 5) + p_prev) + u.i;
|
||||
}
|
||||
|
||||
// Overload for real_t size changes
|
||||
static inline uint32_t hash_djb2_one_float(double p_in, uint32_t p_prev = 5381) {
|
||||
union {
|
||||
double d;
|
||||
|
|
|
@ -2839,7 +2839,7 @@ uint32_t Variant::hash() const {
|
|||
}
|
||||
|
||||
#define hash_compare_scalar(p_lhs, p_rhs) \
|
||||
((p_lhs) == (p_rhs)) || (Math::is_nan(p_lhs) == Math::is_nan(p_rhs))
|
||||
((p_lhs) == (p_rhs)) || (Math::is_nan(p_lhs) && Math::is_nan(p_rhs))
|
||||
|
||||
#define hash_compare_vector2(p_lhs, p_rhs) \
|
||||
(hash_compare_scalar((p_lhs).x, (p_rhs).x)) && \
|
||||
|
|
Loading…
Reference in a new issue