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>2013-08-23 15:28:33 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-08-23 15:28:33 +0400
commit81096bab0ca70b51ab3762c663a93db887f70d43 (patch)
tree3865322944e92735b820d6251bbcf435e11b850a /source/blender/bmesh/operators/bmo_triangulate.c
parent9843170f4b364cfd0b2b0346bfc4958c10e443f3 (diff)
correct error in recent commit triangle-fill-dissolve, need to check if the edges face is removed (happens in rare cases).
Diffstat (limited to 'source/blender/bmesh/operators/bmo_triangulate.c')
-rw-r--r--source/blender/bmesh/operators/bmo_triangulate.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/source/blender/bmesh/operators/bmo_triangulate.c b/source/blender/bmesh/operators/bmo_triangulate.c
index a8179330261..590b5ea97c4 100644
--- a/source/blender/bmesh/operators/bmo_triangulate.c
+++ b/source/blender/bmesh/operators/bmo_triangulate.c
@@ -137,16 +137,21 @@ void bmo_triangle_fill_exec(BMesh *bm, BMOperator *op)
if (use_dissolve) {
BMO_ITER (e, &siter, op->slots_out, "geom.out", BM_EDGE) {
- BMFace *f_new;
- f_new = BM_faces_join_pair(bm, e->l->f,
- e->l->radial_next->f, e,
- false); /* join faces */
- if (f_new) {
- BMO_elem_flag_enable(bm, f_new, ELE_NEW);
- BM_edge_kill(bm, e);
+ if (LIKELY(e->l)) { /* in rare cases the edges face will have already been removed from the edge */
+ BMFace *f_new;
+ f_new = BM_faces_join_pair(bm, e->l->f,
+ e->l->radial_next->f, e,
+ false); /* join faces */
+ if (f_new) {
+ BMO_elem_flag_enable(bm, f_new, ELE_NEW);
+ BM_edge_kill(bm, e);
+ }
+ else {
+ BMO_error_clear(bm);
+ }
}
else {
- BMO_error_clear(bm);
+ BM_edge_kill(bm, e);
}
}