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:
authorBastien Montagne <montagne29@wanadoo.fr>2014-05-22 00:35:08 +0400
committerBastien Montagne <montagne29@wanadoo.fr>2014-05-22 00:37:50 +0400
commita217db0d6373a4050658049a9ded84f34b33f952 (patch)
tree18a2c2befaaf38f0d4ab40e1a8b96a45e71bf067 /source/blender/bmesh/intern/bmesh_core.c
parent8d297394ba51246f2db0d503df7f4cae19ca6e92 (diff)
Fix T40297: Crash while ripping an edge when autosmooth is activated.
Turned out there was still quite a few cases were indices were set dirty, but elem_index_dirty was not tagged accordingly (mostly for BM_LOOP, but a few others as well). So probably this crash was not the only one hidden here. Hopefully all possible cases were catched this time!
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_core.c')
-rw-r--r--source/blender/bmesh/intern/bmesh_core.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c
index 1f81b59badc..6a13a99999c 100644
--- a/source/blender/bmesh/intern/bmesh_core.c
+++ b/source/blender/bmesh/intern/bmesh_core.c
@@ -198,7 +198,13 @@ static BMLoop *bm_loop_create(BMesh *bm, BMVert *v, BMEdge *e, BMFace *f,
/* --- assign all members --- */
l->head.data = NULL;
- BM_elem_index_set(l, 0); /* set_loop */
+
+#ifdef USE_DEBUG_INDEX_MEMCHECK
+ DEBUG_MEMCHECK_INDEX_INVALIDATE(l)
+#else
+ BM_elem_index_set(l, -1); /* set_ok_invalid */
+#endif
+
l->head.hflag = 0;
l->head.htype = BM_LOOP;
l->head.api_flag = 0;
@@ -1927,7 +1933,7 @@ BMFace *bmesh_jfke(BMesh *bm, BMFace *f1, BMFace *f2, BMEdge *e)
BLI_mempool_free(bm->fpool, f2);
bm->totface--;
/* account for both above */
- bm->elem_index_dirty |= BM_EDGE | BM_FACE;
+ bm->elem_index_dirty |= BM_EDGE | BM_LOOP | BM_FACE;
BM_CHECK_ELEMENT(f1);