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
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-04-25 11:23:20 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-04-25 11:23:20 +0400
commit6cc48ec555f06ab8dbf7cfb262e06d1fcebf334c (patch)
tree3fa8f25a19b14fff079c09953fca1fb80415c669 /source/blender/blenkernel/intern/mesh_validate.c
parent398cf78c25370cc1aa695c781337cec9dabc0c0a (diff)
mesh.validate() / BKE_mesh_validate() --- functions now check for duplicate vertices used within the same polygon.
(which would crash otherwise)
Diffstat (limited to 'source/blender/blenkernel/intern/mesh_validate.c')
-rw-r--r--source/blender/blenkernel/intern/mesh_validate.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/mesh_validate.c b/source/blender/blenkernel/intern/mesh_validate.c
index aebbcd4208d..446ad399e11 100644
--- a/source/blender/blenkernel/intern/mesh_validate.c
+++ b/source/blender/blenkernel/intern/mesh_validate.c
@@ -240,9 +240,23 @@ int BKE_mesh_validate_arrays(Mesh *mesh,
PRINT(" loop %u has invalid vert reference (%u)\n", sp->loopstart + j, ml->v);
sp->invalid = TRUE;
}
+
+ mverts[ml->v].flag |= ME_VERT_TMP_TAG;
*v = ml->v;
}
+ /* is the same vertex used more then once */
+ if (!sp->invalid) {
+ v = sp->verts;
+ for (j = 0; j < mp->totloop; j++, v++) {
+ if ((mverts[*v].flag & ME_VERT_TMP_TAG) == 0) {
+ PRINT(" poly %u has duplicate vert reference at corner (%u)\n", i, j);
+ sp->invalid = TRUE;
+ }
+ mverts[*v].flag &= ~ME_VERT_TMP_TAG;
+ }
+ }
+
if (sp->invalid)
continue;