diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-04-25 11:23:20 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-04-25 11:23:20 +0400 |
commit | 6cc48ec555f06ab8dbf7cfb262e06d1fcebf334c (patch) | |
tree | 3fa8f25a19b14fff079c09953fca1fb80415c669 /source/blender/blenkernel/intern/mesh_validate.c | |
parent | 398cf78c25370cc1aa695c781337cec9dabc0c0a (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.c | 14 |
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; |