[Bf-blender-cvs] [0e68751b8a0] master: Fix BLI_ASSERT_UNIT macro w/ non-finite numbers

Campbell Barton noreply at git.blender.org
Wed Jun 6 19:50:28 CEST 2018


Commit: 0e68751b8a0bac59a275b1fe3d818b8259d1cc7f
Author: Campbell Barton
Date:   Wed Jun 6 19:49:27 2018 +0200
Branches: master
https://developer.blender.org/rB0e68751b8a0bac59a275b1fe3d818b8259d1cc7f

Fix BLI_ASSERT_UNIT macro w/ non-finite numbers

===================================================================

M	source/blender/blenlib/BLI_math_base.h

===================================================================

diff --git a/source/blender/blenlib/BLI_math_base.h b/source/blender/blenlib/BLI_math_base.h
index 6f8e48d83b2..f455436ce63 100644
--- a/source/blender/blenlib/BLI_math_base.h
+++ b/source/blender/blenlib/BLI_math_base.h
@@ -200,24 +200,28 @@ double double_round(double x, int ndigits);
  * check the vector is unit length, or zero length (which can't be helped in some cases).
  */
 #ifndef NDEBUG
-/* note: 0.0001 is too small becaues normals may be converted from short's: see [#34322] */
+/** \note 0.0001 is too small becaues normals may be converted from short's: see T34322. */
 #  define BLI_ASSERT_UNIT_EPSILON 0.0002f
+/**
+ * \note Checks are flipped so NAN doesn't assert. This is done because we're making sure the value was normalized
+ * and in the case we don't want NAN to be raising asserts since there is nothing to be done in that case.
+ */
 #  define BLI_ASSERT_UNIT_V3(v)  {                                            \
 	const float _test_unit = len_squared_v3(v);                               \
-	BLI_assert((fabsf(_test_unit - 1.0f) < BLI_ASSERT_UNIT_EPSILON) ||        \
-	           (fabsf(_test_unit)        < BLI_ASSERT_UNIT_EPSILON));         \
+	BLI_assert(!(fabsf(_test_unit - 1.0f) >= BLI_ASSERT_UNIT_EPSILON) ||      \
+	           !(fabsf(_test_unit)        >= BLI_ASSERT_UNIT_EPSILON));       \
 } (void)0
 
 #  define BLI_ASSERT_UNIT_V2(v)  {                                            \
 	const float _test_unit = len_squared_v2(v);                               \
-	BLI_assert((fabsf(_test_unit - 1.0f) < BLI_ASSERT_UNIT_EPSILON) ||        \
-	           (fabsf(_test_unit)        < BLI_ASSERT_UNIT_EPSILON));         \
+	BLI_assert(!(fabsf(_test_unit - 1.0f) >= BLI_ASSERT_UNIT_EPSILON) ||      \
+	           !(fabsf(_test_unit)        >= BLI_ASSERT_UNIT_EPSILON));       \
 } (void)0
 
 #  define BLI_ASSERT_UNIT_QUAT(q)  {                                          \
 	const float _test_unit = dot_qtqt(q, q);                                  \
-	BLI_assert((fabsf(_test_unit - 1.0f) < BLI_ASSERT_UNIT_EPSILON * 10) ||   \
-	           (fabsf(_test_unit)        < BLI_ASSERT_UNIT_EPSILON * 10));    \
+	BLI_assert(!(fabsf(_test_unit - 1.0f) >= BLI_ASSERT_UNIT_EPSILON * 10) || \
+	           !(fabsf(_test_unit)        >= BLI_ASSERT_UNIT_EPSILON * 10));  \
 } (void)0
 
 #  define BLI_ASSERT_ZERO_M3(m)  {                                            \



More information about the Bf-blender-cvs mailing list