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 /source/blender/bmesh/intern | |
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...
Diffstat (limited to 'source/blender/bmesh/intern')
-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); |