diff options
author | Howard Trickey <howard.trickey@gmail.com> | 2013-07-04 00:52:31 +0400 |
---|---|---|
committer | Howard Trickey <howard.trickey@gmail.com> | 2013-07-04 00:52:31 +0400 |
commit | 2e7776b95abb60a91958938bb2840d45ad77bfbb (patch) | |
tree | 89fbbed21f7169ad4397d3b92801070d2f4324ad /source/blender/bmesh/tools/bmesh_bevel.c | |
parent | bbfc3c6cee013f8a4458adcb120a462f641926e2 (diff) |
Fix bevel crash bug 35990. Sometimes no face to interpolate from.
Diffstat (limited to 'source/blender/bmesh/tools/bmesh_bevel.c')
-rw-r--r-- | source/blender/bmesh/tools/bmesh_bevel.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/source/blender/bmesh/tools/bmesh_bevel.c b/source/blender/bmesh/tools/bmesh_bevel.c index 85fbdb383fd..d7073ef61be 100644 --- a/source/blender/bmesh/tools/bmesh_bevel.c +++ b/source/blender/bmesh/tools/bmesh_bevel.c @@ -268,8 +268,8 @@ static BMFace *bev_create_ngon(BMesh *bm, BMVert **vert_arr, const int totv, } f = BM_face_create(bm, vert_arr, ee, totv, 0); } - if ((facerep || face_arr) && f) { - BM_elem_attrs_copy(bm, bm, facerep, f); + if ((facerep || (face_arr && face_arr[0])) && f) { + BM_elem_attrs_copy(bm, bm, facerep ? facerep : face_arr[0], f); if (do_interp) { i = 0; BM_ITER_ELEM (l, &iter, f, BM_LOOPS_OF_FACE) { @@ -281,7 +281,8 @@ static BMFace *bev_create_ngon(BMesh *bm, BMVert **vert_arr, const int totv, else { interp_f = facerep; } - BM_loop_interp_from_face(bm, l, interp_f, TRUE, TRUE); + if (interp_f) + BM_loop_interp_from_face(bm, l, interp_f, TRUE, TRUE); i++; } } @@ -404,7 +405,8 @@ static BMFace *bev_create_quad_straddle(BMesh *bm, BMVert *v1, BMVert *v2, BMVer facerep = f1; else facerep = f2; - BM_loop_interp_from_face(bm, l, facerep, TRUE, TRUE); + if (facerep) + BM_loop_interp_from_face(bm, l, facerep, TRUE, TRUE); } return f; } |