[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28582] trunk/blender/source/blender/ render/intern/raytrace/rayobject_rtbuild.cpp: fix for raytrace crash on scenes with very large objects, assert could fail with really large numbers, instead return 0.0.

Campbell Barton ideasman42 at gmail.com
Tue May 4 23:56:01 CEST 2010


Revision: 28582
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28582
Author:   campbellbarton
Date:     2010-05-04 23:56:01 +0200 (Tue, 04 May 2010)

Log Message:
-----------
fix for raytrace crash on scenes with very large objects, assert could fail with really large numbers, instead return 0.0.

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp

Modified: trunk/blender/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp
===================================================================
--- trunk/blender/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp	2010-05-04 21:43:43 UTC (rev 28581)
+++ trunk/blender/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp	2010-05-04 21:56:01 UTC (rev 28582)
@@ -458,8 +458,10 @@
 	sub[2] = max[2]-min[2];
 
 	a = (sub[0]*sub[1] + sub[0]*sub[2] + sub[1]*sub[2])*2;
-	assert(a >= 0.0);
-	return a;
+    /* used to have an assert() here on negative results 
+     * however, in this case its likely some overflow or ffast math error.
+     * so just return 0.0f instead. */
+	return a < 0.0f ? 0.0f : a;
 }
 
 int bb_largest_axis(float *min, float *max)





More information about the Bf-blender-cvs mailing list