[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50725] trunk/blender/source/blender/ blenkernel/intern/subsurf_ccg.c: don't divide by zero in get_ss_weights() which would set values - only to be overwritten.

Campbell Barton ideasman42 at gmail.com
Tue Sep 18 14:53:42 CEST 2012


Revision: 50725
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50725
Author:   campbellbarton
Date:     2012-09-18 12:53:41 +0000 (Tue, 18 Sep 2012)
Log Message:
-----------
don't divide by zero in get_ss_weights() which would set values - only to be overwritten.
useful when using --debug-fpe since this isnt and exceptional case.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c

Modified: trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2012-09-18 11:21:57 UTC (rev 50724)
+++ trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2012-09-18 12:53:41 UTC (rev 50725)
@@ -513,10 +513,14 @@
 					w2 = (1.0f - fx + fac2 * fx * -fac) * (fy);
 					w4 = (fx) * (1.0f - fy + -fac2 * fy * fac);
 
-					fac2 = 1.0f - (w1 + w2 + w4);
-					fac2 = fac2 / (float)(faceLen - 3);
-					for (j = 0; j < faceLen; j++)
-						w[j] = fac2;
+					/* these values aren't used for tri's and cause divide by zero */
+					if (faceLen > 3) {
+						fac2 = 1.0f - (w1 + w2 + w4);
+						fac2 = fac2 / (float)(faceLen - 3);
+						for (j = 0; j < faceLen; j++) {
+							w[j] = fac2;
+						}
+					}
 					
 					w[i] = w1;
 					w[(i - 1 + faceLen) % faceLen] = w2;




More information about the Bf-blender-cvs mailing list