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
path: root/source
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2013-10-20 01:20:50 +0400
committerDalai Felinto <dfelinto@gmail.com>2013-10-20 01:20:50 +0400
commit8f22c120f52fa6c9868eefa6561d06e984a86535 (patch)
treed06322f81b735c427e920b5e795e9758cb573d29 /source
parent0410eff30606473ab106f49cca8a83abf599dacf (diff)
fix [#37145] "Triangulate Face" crash in specific scene
it was asserting if the last edge faces were already all set
Diffstat (limited to 'source')
-rw-r--r--source/blender/bmesh/intern/bmesh_polygon.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/source/blender/bmesh/intern/bmesh_polygon.c b/source/blender/bmesh/intern/bmesh_polygon.c
index 46810f4dc8c..8a3abcb9b5e 100644
--- a/source/blender/bmesh/intern/bmesh_polygon.c
+++ b/source/blender/bmesh/intern/bmesh_polygon.c
@@ -974,26 +974,25 @@ void BM_face_triangulate(BMesh *bm, BMFace *f,
BLI_assert(ok);
- if (i == edge_array_len - 1) {
- if (FACE_USED_TEST(f_a) == false) {
+ if (FACE_USED_TEST(f_a) == false) {
+ FACE_USED_SET(f_a);
+
+ if (nf_i < edge_array_len) {
+ r_faces_new[nf_i++] = f_a;
+ } else {
f_new = f_a;
- }
- else if (FACE_USED_TEST(f_b) == false) {
- f_new = f_b;
- }
- else {
- BLI_assert(false);
+ break;
}
}
- else {
- if (FACE_USED_TEST(f_a) == false) {
- FACE_USED_SET(f_a);
- r_faces_new[nf_i++] = f_a;
- }
- if (FACE_USED_TEST(f_b) == false) {
- FACE_USED_SET(f_b);
+ if (FACE_USED_TEST(f_b) == false) {
+ FACE_USED_SET(f_b);
+
+ if (nf_i < edge_array_len) {
r_faces_new[nf_i++] = f_b;
+ } else {
+ f_new = f_b;
+ break;
}
}
}