[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44783] trunk/blender/source/blender/ blenkernel/intern/multires.c: Fix an infinite loop in get_levels_from_disps ().

Nicholas Bishop nicholasbishop at gmail.com
Sat Mar 10 13:26:44 CET 2012


Revision: 44783
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44783
Author:   nicholasbishop
Date:     2012-03-10 12:26:32 +0000 (Sat, 10 Mar 2012)
Log Message:
-----------
Fix an infinite loop in get_levels_from_disps().

This is called when adding a multiries modifier. BMesh MDisps have
only one loop's displacements rather than a full face's, so don't
multiply by number of corners here.

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

Modified: trunk/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires.c	2012-03-10 06:46:23 UTC (rev 44782)
+++ trunk/blender/source/blender/blenkernel/intern/multires.c	2012-03-10 12:26:32 UTC (rev 44783)
@@ -269,15 +269,14 @@
 	mdisp = CustomData_get_layer(&me->ldata, CD_MDISPS);
 
 	for (i = 0; i < me->totpoly; ++i) {
-		int S = me->mpoly[i].totloop;
-		
 		md = mdisp + me->mpoly[i].loopstart;
+
 		for (j=0; j<me->mpoly[i].totloop; j++, md++) {
 			if (md->totdisp == 0) continue;
 	
 			while (1) {
 				int side = (1 << (totlvl-1)) + 1;
-				int lvl_totdisp = side*side*S;
+				int lvl_totdisp = side*side;
 				if (md->totdisp == lvl_totdisp)
 					break;
 				else if (md->totdisp < lvl_totdisp)




More information about the Bf-blender-cvs mailing list