Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorNicholas Bishop <nicholasbishop@gmail.com>2012-03-10 16:26:32 +0400
committerNicholas Bishop <nicholasbishop@gmail.com>2012-03-10 16:26:32 +0400
commit2932ab8761efa43533baebc009a2b6ef05c8dc13 (patch)
tree9b46dc0539f267cc0c7584a7519b7ab3b15819d8 /source
parent20d8d366abe07f00ec20623dcbde69022962ed67 (diff)
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.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/multires.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c
index 6581c442356..06de3cbe5a6 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@ -269,15 +269,14 @@ static int get_levels_from_disps(Object *ob)
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)