[Bf-blender-cvs] [8bdb884] master: Fix related to T46804 - BMesh validate code would use invalid pointers after checking them!

Bastien Montagne noreply at git.blender.org
Thu Nov 19 20:44:32 CET 2015


Commit: 8bdb884289bb56bbdc7d73987ef72242da169fff
Author: Bastien Montagne
Date:   Thu Nov 19 20:42:46 2015 +0100
Branches: master
https://developer.blender.org/rB8bdb884289bb56bbdc7d73987ef72242da169fff

Fix related to T46804 - BMesh validate code would use invalid pointers after checking them!

Note that this does not fix the issue reported in T46804, juts makes it crash later down in code...

===================================================================

M	source/blender/bmesh/intern/bmesh_core.c

===================================================================

diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c
index a018c11..f82b09d 100644
--- a/source/blender/bmesh/intern/bmesh_core.c
+++ b/source/blender/bmesh/intern/bmesh_core.c
@@ -629,15 +629,17 @@ int bmesh_elem_check(void *element, const char htype)
 					err |= (1 << 18);
 				if (!l_iter->v)
 					err |= (1 << 19);
-				if (!BM_vert_in_edge(l_iter->e, l_iter->v) || !BM_vert_in_edge(l_iter->e, l_iter->next->v)) {
-					err |= (1 << 20);
-				}
+				if (l_iter->e && l_iter->v) {
+					if (!BM_vert_in_edge(l_iter->e, l_iter->v) || !BM_vert_in_edge(l_iter->e, l_iter->next->v)) {
+						err |= (1 << 20);
+					}
 
-				if (!bmesh_radial_validate(bmesh_radial_length(l_iter), l_iter))
-					err |= (1 << 21);
+					if (!bmesh_radial_validate(bmesh_radial_length(l_iter), l_iter))
+						err |= (1 << 21);
 
-				if (!bmesh_disk_count(l_iter->v) || !bmesh_disk_count(l_iter->next->v))
-					err |= (1 << 22);
+					if (!bmesh_disk_count(l_iter->v) || !bmesh_disk_count(l_iter->next->v))
+						err |= (1 << 22);
+				}
 
 				len++;
 			} while ((l_iter = l_iter->next) != l_first);




More information about the Bf-blender-cvs mailing list