Browse Source

Merge pull request #8393 from hpvb/fix-8081

Correct Variant::hash_compare()
Andreas Haas 8 years ago
parent
commit
6871ec708f
2 changed files with 1 additions and 19 deletions
  1. 0 18
      core/hashfuncs.h
  2. 1 1
      core/variant.cpp

+ 0 - 18
core/hashfuncs.h

@@ -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;

+ 1 - 1
core/variant.cpp

@@ -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)) && \