[Bf-blender-cvs] [21173347370] blender2.8: Fix assert calculating tangents with no faces

Campbell Barton noreply at git.blender.org
Wed Jun 28 23:52:02 CEST 2017


Commit: 21173347370f75ed5292445aead1de384081d8e4
Author: Campbell Barton
Date:   Wed Jun 28 20:59:49 2017 +1000
Branches: blender2.8
https://developer.blender.org/rB21173347370f75ed5292445aead1de384081d8e4

Fix assert calculating tangents with no faces

===================================================================

M	source/blender/blenkernel/intern/editmesh_tangent.c
M	source/blender/blenkernel/intern/mesh_tangent.c

===================================================================

diff --git a/source/blender/blenkernel/intern/editmesh_tangent.c b/source/blender/blenkernel/intern/editmesh_tangent.c
index b04fc753f7a..ee13a887a5f 100644
--- a/source/blender/blenkernel/intern/editmesh_tangent.c
+++ b/source/blender/blenkernel/intern/editmesh_tangent.c
@@ -336,7 +336,7 @@ void BKE_editmesh_loop_tangent_calc(
 		}
 #endif
 		/* Calculation */
-		{
+		if (em->tottri != 0) {
 			TaskScheduler *scheduler = BLI_task_scheduler_get();
 			TaskPool *task_pool;
 			task_pool = BLI_task_pool_create(scheduler, NULL);
@@ -396,6 +396,9 @@ void BKE_editmesh_loop_tangent_calc(
 			BLI_task_pool_work_and_wait(task_pool);
 			BLI_task_pool_free(task_pool);
 		}
+		else {
+			tangent_mask_curr = tangent_mask;
+		}
 #ifdef USE_LOOPTRI_DETECT_QUADS
 		if (face_as_quad_map) {
 			MEM_freeN(face_as_quad_map);
diff --git a/source/blender/blenkernel/intern/mesh_tangent.c b/source/blender/blenkernel/intern/mesh_tangent.c
index b9d1025d7b1..669b59bca05 100644
--- a/source/blender/blenkernel/intern/mesh_tangent.c
+++ b/source/blender/blenkernel/intern/mesh_tangent.c
@@ -602,7 +602,7 @@ void BKE_mesh_calc_loop_tangent_ex(
 #endif
 
 		/* Calculation */
-		{
+		if (looptri_len != 0) {
 			TaskScheduler *scheduler = BLI_task_scheduler_get();
 			TaskPool *task_pool;
 			task_pool = BLI_task_pool_create(scheduler, NULL);
@@ -653,6 +653,9 @@ void BKE_mesh_calc_loop_tangent_ex(
 			BLI_task_pool_work_and_wait(task_pool);
 			BLI_task_pool_free(task_pool);
 		}
+		else {
+			tangent_mask_curr = tangent_mask;
+		}
 #ifdef USE_LOOPTRI_DETECT_QUADS
 		if (face_as_quad_map) {
 			MEM_freeN(face_as_quad_map);




More information about the Bf-blender-cvs mailing list