From 3c05662f5e03e1d3d86e4ed081301f83ed72e26b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Sep 2013 11:11:41 +0000 Subject: fix error where BKE_mesh_cd_validate layer renaming would use invalid index values. from r60260 also correct some comments. --- source/blender/blenkernel/intern/mesh_validate.c | 9 ++++++--- source/blender/blenlib/intern/math_geom.c | 2 +- source/blender/makesdna/DNA_object_types.h | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) (limited to 'source') diff --git a/source/blender/blenkernel/intern/mesh_validate.c b/source/blender/blenkernel/intern/mesh_validate.c index 891d3080797..1c9576d74d0 100644 --- a/source/blender/blenkernel/intern/mesh_validate.c +++ b/source/blender/blenkernel/intern/mesh_validate.c @@ -1002,6 +1002,7 @@ void BKE_mesh_cd_validate(Mesh *me) CustomData_add_layer_named(&me->pdata, CD_MTEXPOLY, CD_DEFAULT, NULL, me->totpoly, from_name); CustomData_set_layer_unique_name(&me->pdata, totlayer_mtex); } while (totlayer_uv != ++totlayer_mtex); + mtex_index = CustomData_get_layer_index(&me->pdata, CD_MTEXPOLY); } else if (totlayer_uv < totlayer_mtex) { do { @@ -1009,15 +1010,17 @@ void BKE_mesh_cd_validate(Mesh *me) CustomData_add_layer_named(&me->ldata, CD_MLOOPUV, CD_DEFAULT, NULL, me->totloop, from_name); CustomData_set_layer_unique_name(&me->ldata, totlayer_uv); } while (totlayer_mtex != ++totlayer_uv); + uv_index = CustomData_get_layer_index(&me->ldata, CD_MLOOPUV); } BLI_assert(totlayer_mtex == totlayer_uv); /* Check uv/tex names match as well!!! */ for (i = 0; i < totlayer_mtex; i++, mtex_index++, uv_index++) { - const char *name = me->pdata.layers[mtex_index].name; - if (strcmp(name, me->ldata.layers[uv_index].name) != 0) { - BKE_mesh_uv_cdlayer_rename_index(me, mtex_index, uv_index, -1, name, false); + const char *name_src = me->pdata.layers[mtex_index].name; + const char *name_dst = me->ldata.layers[uv_index].name; + if (!STREQ(name_src, name_dst)) { + BKE_mesh_uv_cdlayer_rename_index(me, mtex_index, uv_index, -1, name_src, false); } } } diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index bf20dd48486..65cfac86021 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -1114,7 +1114,7 @@ bool isect_point_planes_v3(float (*planes)[4], int totplane, const float p[3]) } /** - * Intersect line/plane, optionally treat line as directional (like a ray) with the no_flip argument. + * Intersect line/plane. * * \param out The intersection point. * \param l1 The first point of the line. diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index 53d2ab1df07..2ff697f513f 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -142,7 +142,7 @@ typedef struct Object { /* materials */ struct Material **mat; /* material slots */ char *matbits; /* a boolean field, with each byte 1 if corresponding material is linked to object */ - int totcol; /* copy of mesh or curve or meta */ + int totcol; /* copy of mesh, curve & meta struct member of same name (keep in sync) */ int actcol; /* currently selected material in the UI */ /* rot en drot have to be together! (transform('r' en 's')) */ -- cgit v1.2.3