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-07-06 06:20:39 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-07-06 06:20:39 +0400
commit0a1bcc78e0b5e4d11e48b9f447fa315a86444f96 (patch)
tree73670937cc0a3a0e1e5991dd7e08482e47f5f237 /source/blender/bmesh/operators/bmo_fill_edgeloop.c
parente43f25757b22be602f55559c1e62786e2cf647e9 (diff)
fix for writing past array end with loop filling.
Diffstat (limited to 'source/blender/bmesh/operators/bmo_fill_edgeloop.c')
-rw-r--r--source/blender/bmesh/operators/bmo_fill_edgeloop.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/source/blender/bmesh/operators/bmo_fill_edgeloop.c b/source/blender/bmesh/operators/bmo_fill_edgeloop.c
index f80eafd4135..bd0466ff499 100644
--- a/source/blender/bmesh/operators/bmo_fill_edgeloop.c
+++ b/source/blender/bmesh/operators/bmo_fill_edgeloop.c
@@ -62,22 +62,19 @@ void bmo_edgeloop_fill_exec(BMesh *bm, BMOperator *op)
BMO_elem_flag_enable(bm, e, EDGE_MARK);
BM_ITER_ELEM (v, &viter, e, BM_VERTS_OF_EDGE) {
if (BMO_elem_flag_test(bm, v, VERT_USED) == false) {
- BMO_elem_flag_enable(bm, v, VERT_USED);
- verts[i++] = v;
if (i == tote) {
- break;
+ goto cleanup;
}
+
+ BMO_elem_flag_enable(bm, v, VERT_USED);
+ verts[i++] = v;
}
}
- if (i > tote) {
- break;
- }
}
/* we have a different number of verts to edges */
if (i != tote) {
- MEM_freeN(verts);
- return;
+ goto cleanup;
}
/* loop over connected flagged edges and fill in faces, this is made slightly more
@@ -156,5 +153,6 @@ void bmo_edgeloop_fill_exec(BMesh *bm, BMOperator *op)
BMO_slot_buffer_from_enabled_flag(bm, op, op->slots_out, "faces.out", BM_FACE, ELE_OUT);
}
+cleanup:
MEM_freeN(verts);
}