From e2e87efea28ce6acbb8bc13d1623735f8e6b4ff1 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Wed, 29 Jul 2020 10:31:37 +0200 Subject: Cleanup: Always keep unlock at same level as lock. This was fine in those cases with current code, but that kind of assumption is always risky, and an open door to hard-to-track bugs when code changes in the future... --- source/blender/blenkernel/intern/bvhutils.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'source/blender/blenkernel/intern/bvhutils.c') diff --git a/source/blender/blenkernel/intern/bvhutils.c b/source/blender/blenkernel/intern/bvhutils.c index 93794eb9709..64c7b89bade 100644 --- a/source/blender/blenkernel/intern/bvhutils.c +++ b/source/blender/blenkernel/intern/bvhutils.c @@ -717,11 +717,14 @@ BVHTree *bvhtree_from_mesh_verts_ex(BVHTreeFromMesh *data, /* printf("BVHTree built and saved on cache\n"); */ BVHCache *bvh_cache = *bvh_cache_p; bvhcache_insert(bvh_cache, tree, bvh_cache_type); - bvhcache_unlock(bvh_cache, lock_started); in_cache = true; } } + if (bvh_cache_p) { + bvhcache_unlock(*bvh_cache_p, lock_started); + } + /* Setup BVHTreeFromMesh */ bvhtree_from_mesh_verts_setup_data(data, tree, in_cache, vert, vert_allocated); @@ -929,11 +932,14 @@ BVHTree *bvhtree_from_mesh_edges_ex(BVHTreeFromMesh *data, /* Save on cache for later use */ /* printf("BVHTree built and saved on cache\n"); */ bvhcache_insert(bvh_cache, tree, bvh_cache_type); - bvhcache_unlock(bvh_cache, lock_started); in_cache = true; } } + if (bvh_cache_p) { + bvhcache_unlock(*bvh_cache_p, lock_started); + } + /* Setup BVHTreeFromMesh */ bvhtree_from_mesh_edges_setup_data( data, tree, in_cache, vert, vert_allocated, edge, edge_allocated); @@ -1058,11 +1064,14 @@ BVHTree *bvhtree_from_mesh_faces_ex(BVHTreeFromMesh *data, /* printf("BVHTree built and saved on cache\n"); */ BVHCache *bvh_cache = *bvh_cache_p; bvhcache_insert(bvh_cache, tree, bvh_cache_type); - bvhcache_unlock(bvh_cache, lock_started); in_cache = true; } } + if (bvh_cache_p) { + bvhcache_unlock(*bvh_cache_p, lock_started); + } + /* Setup BVHTreeFromMesh */ bvhtree_from_mesh_faces_setup_data( data, tree, in_cache, vert, vert_allocated, face, face_allocated); @@ -1298,11 +1307,14 @@ BVHTree *bvhtree_from_mesh_looptri_ex(BVHTreeFromMesh *data, if (bvh_cache_p) { BVHCache *bvh_cache = *bvh_cache_p; bvhcache_insert(bvh_cache, tree, bvh_cache_type); - bvhcache_unlock(bvh_cache, lock_started); in_cache = true; } } + if (bvh_cache_p) { + bvhcache_unlock(*bvh_cache_p, lock_started); + } + /* Setup BVHTreeFromMesh */ bvhtree_from_mesh_looptri_setup_data(data, tree, -- cgit v1.2.3