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:
authorCampbell Barton <ideasman42@gmail.com>2013-11-19 07:31:26 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-11-19 07:31:26 +0400
commit2b946f42970bf4f3b8ce8e5c9b79451745309d89 (patch)
treea645788cfc92cbd34398eeae43843b1283e89d04 /source/blender/blenkernel/intern/bvhutils.c
parent95d3286c65e034d9801c2623e81ef92a06e6cc8c (diff)
Fix T37445: Crash with snapping and shrink-wrap modifier.
Developer note: BVHTREE_FROM_FACES was being used for both edit-mesh and derived-mesh bvh-trees, this could cause index lookup errors in editmode. Fix by adding a new type for editmesh so theres no confusion.
Diffstat (limited to 'source/blender/blenkernel/intern/bvhutils.c')
-rw-r--r--source/blender/blenkernel/intern/bvhutils.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/bvhutils.c b/source/blender/blenkernel/intern/bvhutils.c
index dba7a291a46..cce511aedcb 100644
--- a/source/blender/blenkernel/intern/bvhutils.c
+++ b/source/blender/blenkernel/intern/bvhutils.c
@@ -573,8 +573,9 @@ BVHTree *bvhtree_from_mesh_verts(BVHTreeFromMesh *data, DerivedMesh *dm, float e
/* Builds a bvh tree.. where nodes are the faces of the given dm. */
BVHTree *bvhtree_from_mesh_faces(BVHTreeFromMesh *data, DerivedMesh *dm, float epsilon, int tree_type, int axis)
{
- BVHTree *tree = bvhcache_find(&dm->bvhCache, BVHTREE_FROM_FACES);
BMEditMesh *em = data->em_evil;
+ const int bvhcache_type = em ? BVHTREE_FROM_FACES_EDITMESH : BVHTREE_FROM_FACES;
+ BVHTree *tree = bvhcache_find(&dm->bvhCache, bvhcache_type);
/* Not in cache */
if (tree == NULL) {
@@ -682,7 +683,7 @@ BVHTree *bvhtree_from_mesh_faces(BVHTreeFromMesh *data, DerivedMesh *dm, float e
/* Save on cache for later use */
// printf("BVHTree built and saved on cache\n");
- bvhcache_insert(&dm->bvhCache, tree, BVHTREE_FROM_FACES);
+ bvhcache_insert(&dm->bvhCache, tree, bvhcache_type);
}
}
}