From 2932ab8761efa43533baebc009a2b6ef05c8dc13 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sat, 10 Mar 2012 12:26:32 +0000 Subject: 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. --- source/blender/blenkernel/intern/multires.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'source') 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; jmpoly[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) -- cgit v1.2.3