diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-02-09 07:45:53 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-02-09 07:45:53 +0300 |
commit | 08841476983f490c4dbf16934bc05602bbd4d5c5 (patch) | |
tree | c38dee93dc2bfb6b05ba1cbb4a19916e271e8a5e /source/blender/blenkernel | |
parent | f6733d90e57fe8dce473f05b4bf0b4e6d4559ecd (diff) |
fix [#25968] Crash on changing merge distance in array modifier with edgesplit modifier in chain
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/mesh.c | 26 |
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) { |