[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51972] trunk/blender/source/blender/ editors/interface/interface.c: prevent floating point exceptions from being raised in soft_range_round_up /soft_range_round_down(), caused by log(0).

Campbell Barton ideasman42 at gmail.com
Wed Nov 7 12:28:55 CET 2012


Revision: 51972
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51972
Author:   campbellbarton
Date:     2012-11-07 11:28:50 +0000 (Wed, 07 Nov 2012)
Log Message:
-----------
prevent floating point exceptions from being raised in soft_range_round_up/soft_range_round_down(), caused by log(0).

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface.c

Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c	2012-11-07 11:19:54 UTC (rev 51971)
+++ trunk/blender/source/blender/editors/interface/interface.c	2012-11-07 11:28:50 UTC (rev 51972)
@@ -1902,8 +1902,9 @@
 
 static double soft_range_round_up(double value, double max)
 {
-	/* round up to .., 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, .. */
-	double newmax = pow(10.0, ceil(log(value) / M_LN10));
+	/* round up to .., 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, ..
+	 * checking for 0.0 prevents floating point exceptions */
+	double newmax = (value != 0.0) ? pow(10.0, ceil(log(value) / M_LN10)) : 0.0;
 
 	if (newmax * 0.2 >= max && newmax * 0.2 >= value)
 		return newmax * 0.2;
@@ -1915,8 +1916,9 @@
 
 static double soft_range_round_down(double value, double max)
 {
-	/* round down to .., 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, .. */
-	double newmax = pow(10.0, floor(log(value) / M_LN10));
+	/* round down to .., 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, ..
+	 * checking for 0.0 prevents floating point exceptions */
+	double newmax = (value != 0.0) ? pow(10.0, floor(log(value) / M_LN10)) : 0.0;
 
 	if (newmax * 5.0 <= max && newmax * 5.0 <= value)
 		return newmax * 5.0;




More information about the Bf-blender-cvs mailing list