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:
authorHoward Trickey <howard.trickey@gmail.com>2019-02-08 17:24:43 +0300
committerHoward Trickey <howard.trickey@gmail.com>2019-02-08 17:24:43 +0300
commit2f0dbdea4f3f6c5c5e3e8227cb3aa99e1bf7eefd (patch)
tree7a0652e6319d647227baa0e28d274ae88df6e847 /source/blender/bmesh/tools
parent29922b6ff5f44577abb1feb1d0d31d2e528fc908 (diff)
Bevel, fix crash when adjust offsets with inner arc miter.
Previous assumptions about boundary verts always being attached to edges are now false.
Diffstat (limited to 'source/blender/bmesh/tools')
-rw-r--r--source/blender/bmesh/tools/bmesh_bevel.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/source/blender/bmesh/tools/bmesh_bevel.c b/source/blender/bmesh/tools/bmesh_bevel.c
index e661edc74b0..4d96f49d798 100644
--- a/source/blender/bmesh/tools/bmesh_bevel.c
+++ b/source/blender/bmesh/tools/bmesh_bevel.c
@@ -2843,11 +2843,15 @@ static void adjust_offsets(BevelParams *bp)
v = vchainstart = vanchor;
iscycle = false;
while (v->eon && !v->visited && !iscycle) {
+ v->visited = true;
+ if (!v->efirst)
+ break;
enext = find_other_end_edge_half(bp, v->efirst, &bvcur);
+ if (!enext)
+ break;
BLI_assert(enext != NULL);
vnext = enext->leftv;
v->adjchain = vnext;
- v->visited = true;
if (vnext->visited) {
if (vnext != vchainstart) {
break;
@@ -2862,12 +2866,15 @@ static void adjust_offsets(BevelParams *bp)
v = vchainstart;
bvcur = bv;
do {
+ v->visited = true;
+ if (!v->elast)
+ break;
enext = find_other_end_edge_half(bp, v->elast, &bvcur);
- BLI_assert(enext != NULL);
+ if (!enext)
+ break;
vnext = enext->rightv;
vnext->adjchain = v;
vchainstart = vnext;
- v->visited = true;
v = vnext;
} while (!v->visited && v->eon);
adjust_the_cycle_or_chain(vchainstart, false);