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>2015-11-19 22:42:46 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2015-11-19 22:42:46 +0300
commit8bdb884289bb56bbdc7d73987ef72242da169fff (patch)
tree1ef33d8e915625213bc164b0d7523e0af975b542 /source/blender/bmesh/intern
parentc8bf45c3232874c720acd6aca6ebb1ad8a4af1f7 (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.c16
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);