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>2011-02-09 07:45:53 +0300
committerCampbell Barton <ideasman42@gmail.com>2011-02-09 07:45:53 +0300
commit08841476983f490c4dbf16934bc05602bbd4d5c5 (patch)
treec38dee93dc2bfb6b05ba1cbb4a19916e271e8a5e /source/blender/blenkernel/intern/mesh.c
parentf6733d90e57fe8dce473f05b4bf0b4e6d4559ecd (diff)
fix [#25968] Crash on changing merge distance in array modifier with edgesplit modifier in chain
Diffstat (limited to 'source/blender/blenkernel/intern/mesh.c')
-rw-r--r--source/blender/blenkernel/intern/mesh.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index bd4f631c380..d948b049881 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -456,6 +456,32 @@ int test_index_face(MFace *mface, CustomData *fdata, int mfindex, int nr)
nr--;
}
+ /* check corrupt cases, bowtie geometry, cant handle these because edge data wont exist so just return 0 */
+ if(nr==3) {
+ if(
+ /* real edges */
+ mface->v1==mface->v2 ||
+ mface->v2==mface->v3 ||
+ mface->v3==mface->v1
+ ) {
+ return 0;
+ }
+ }
+ else if(nr==4) {
+ if(
+ /* real edges */
+ mface->v1==mface->v2 ||
+ mface->v2==mface->v3 ||
+ mface->v3==mface->v4 ||
+ mface->v4==mface->v1 ||
+ /* across the face */
+ mface->v1==mface->v3 ||
+ mface->v2==mface->v4
+ ) {
+ return 0;
+ }
+ }
+
/* prevent a zero at wrong index location */
if(nr==3) {
if(mface->v3==0) {