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
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...
-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);