[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32221] trunk/blender/source/blender/ blenkernel/intern/customdata.c: Fix #23186: use of unitialized memory when creating new faces on a mesh
Brecht Van Lommel
brechtvanlommel at pandora.be
Fri Oct 1 00:27:37 CEST 2010
Revision: 32221
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32221
Author: blendix
Date: 2010-10-01 00:27:37 +0200 (Fri, 01 Oct 2010)
Log Message:
-----------
Fix #23186: use of unitialized memory when creating new faces on a mesh
with a multires modifier.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/customdata.c
Modified: trunk/blender/source/blender/blenkernel/intern/customdata.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/customdata.c 2010-09-30 21:07:42 UTC (rev 32220)
+++ trunk/blender/source/blender/blenkernel/intern/customdata.c 2010-09-30 22:27:37 UTC (rev 32221)
@@ -42,6 +42,7 @@
#include "BLI_blenlib.h"
#include "BLI_linklist.h"
+#include "BLI_math.h"
#include "BLI_mempool.h"
#include "BKE_customdata.h"
@@ -452,22 +453,27 @@
int corners, cornersize, S;
/* this function is untested .. */
- corners = mdisp_corners(s);
- cornersize = s->totdisp/corners;
+ if(s->disps) {
+ corners = mdisp_corners(s);
+ cornersize = s->totdisp/corners;
- d = MEM_callocN(sizeof(float) * 3 * s->totdisp, "mdisps swap");
+ d = MEM_callocN(sizeof(float) * 3 * s->totdisp, "mdisps swap");
- for(S = 0; S < corners; S++)
- memcpy(d + cornersize*S, s->disps + cornersize*ci[S], cornersize*3*sizeof(float));
-
- if(s->disps)
- MEM_freeN(s->disps);
- s->disps = d;
+ for(S = 0; S < corners; S++)
+ memcpy(d + cornersize*S, s->disps + cornersize*ci[S], cornersize*3*sizeof(float));
+
+ if(s->disps)
+ MEM_freeN(s->disps);
+ s->disps = d;
+ }
}
static void layerInterp_mdisps(void **sources, float *weights, float *sub_weights,
int count, void *dest)
{
+ MDisps *d = dest;
+ int i;
+
// XXX
#if 0
MDisps *d = dest;
@@ -514,6 +520,11 @@
copy_v3_v3(d->disps[y * st + x], srcdisp);
}
}
+#else
+ if(d->disps) {
+ for(i = 0; i < d->totdisp; ++i)
+ zero_v3(d->disps[i]);
+ }
#endif
}
More information about the Bf-blender-cvs
mailing list