From 6cc48ec555f06ab8dbf7cfb262e06d1fcebf334c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Apr 2012 07:23:20 +0000 Subject: [PATCH] mesh.validate() / BKE_mesh_validate() --- functions now check for duplicate vertices used within the same polygon. (which would crash otherwise) --- source/blender/blenkernel/intern/mesh_validate.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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;