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...
This commit is contained in:
Bastien Montagne 2015-11-19 20:42:46 +01:00
parent c8bf45c323
commit 8bdb884289
1 changed files with 10 additions and 8 deletions

View File

@ -629,16 +629,18 @@ 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_disk_count(l_iter->v) || !bmesh_disk_count(l_iter->next->v))
err |= (1 << 22);
}
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);
len++;
} while ((l_iter = l_iter->next) != l_first);