[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