[Bf-blender-cvs] [b72194f] wiggly-widgets: Fix facemap drawing crash
Julian Eisel
noreply at git.blender.org
Wed Sep 16 19:21:34 CEST 2015
Commit: b72194f61d2cab6c20e2e268b76b5c7e76c1a0c2
Author: Julian Eisel
Date: Wed Sep 16 19:06:30 2015 +0200
Branches: wiggly-widgets
https://developer.blender.org/rBb72194f61d2cab6c20e2e268b76b5c7e76c1a0c2
Fix facemap drawing crash
Issue was that MPoly wasn't reset after iterating.
===================================================================
M source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 1b3fd5e..e91db05 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -1578,7 +1578,7 @@ static void cdDM_buffer_copy_facemap(DerivedMesh *dm, unsigned int *varray)
GPUDrawObject *gdo = dm->drawObject;
int *facemap_iter, *facemap = DM_get_poly_data_layer(dm, CD_FACEMAP);
int i, totpoly, offset = 0;
- MPoly *mp = dm->getPolyArray(dm);
+ MPoly *mp_iter, *mp = dm->getPolyArray(dm);
const MLoopTri *ltri = dm->getLoopTriArray(dm);
MLoop *mloop = dm->getLoopArray(dm);
int *facemap_offset;
@@ -1601,8 +1601,9 @@ static void cdDM_buffer_copy_facemap(DerivedMesh *dm, unsigned int *varray)
facemap_offset = MEM_callocN(gdo->totfacemaps * sizeof(*facemap_offset), "facemap_offset");
facemap_iter = facemap;
- for (i = 0; i < totpoly; i++, facemap_iter++, mp++) {
- gdo->facemap_count[*facemap_iter] += mp->totloop - 2;
+ mp_iter = mp;
+ for (i = 0; i < totpoly; i++, facemap_iter++, mp_iter++) {
+ gdo->facemap_count[*facemap_iter] += mp_iter->totloop - 2;
}
for (i = 0; i < gdo->totfacemaps; i++) {
@@ -1611,10 +1612,11 @@ static void cdDM_buffer_copy_facemap(DerivedMesh *dm, unsigned int *varray)
}
facemap_iter = facemap;
- for (i = 0; i < totpoly; i++, facemap_iter++, mp++) {
- int numtri = mp->totloop - 2;
+ mp_iter = mp;
+ for (i = 0; i < totpoly; i++, facemap_iter++, mp_iter++) {
+ int numtri = mp_iter->totloop - 2;
int fmap_offset = (gdo->facemap_start[*facemap_iter] + facemap_offset[*facemap_iter]) * 3;
- const MLoopTri *ltri_iter = ltri + poly_to_tri_count(i, mp->loopstart);
+ const MLoopTri *ltri_iter = ltri + poly_to_tri_count(i, mp_iter->loopstart);
facemap_offset[*facemap_iter] += numtri;
More information about the Bf-blender-cvs
mailing list