diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2015-11-19 22:42:46 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2015-11-19 22:42:46 +0300 |
commit | 8bdb884289bb56bbdc7d73987ef72242da169fff (patch) | |
tree | 1ef33d8e915625213bc164b0d7523e0af975b542 | |
parent | c8bf45c3232874c720acd6aca6ebb1ad8a4af1f7 (diff) |
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...
-rw-r--r-- | source/blender/bmesh/intern/bmesh_core.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c index a018c11999c..f82b09d48ae 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); |