Avoid Assert in BKE_mesh_calc_loop_tangent_ex
Code could call CustomData_get_layer_index_n with a negative index (if no active and/or render UV layers are found). This would assert since rBe86785c51445. Spotted while looking into T81398. Differential Revision: https://developer.blender.org/D9212
This commit is contained in:
parent
9c7fda6de3
commit
e1cd6fae34
Notes:
blender-bot
2023-10-04 09:42:55 +02:00
Referenced by issue #81398, Blender 2.90.1 crashes on switching to viewport rendered view Referenced by issue #81398, Blender 2.90.1 crashes on switching to viewport rendered view Referenced by issue #81398, Blender 2.90.1 crashes on switching to viewport rendered view Referenced by issue #81398, Blender 2.90.1 crashes on switching to viewport rendered view Referenced by issue #81398, Blender 2.90.1 crashes on switching to viewport rendered view Referenced by issue #81398, Blender 2.90.1 crashes on switching to viewport rendered view Referenced by issue #81398, Blender 2.90.1 crashes on switching to viewport rendered view Referenced by issue #81398, Blender 2.90.1 crashes on switching to viewport rendered view Referenced by issue #81398, Blender 2.90.1 crashes on switching to viewport rendered view
|
@ -724,7 +724,9 @@ void BKE_mesh_calc_loop_tangent_ex(const MVert *mvert,
|
|||
*tangent_mask_curr_p = tangent_mask_curr;
|
||||
|
||||
/* Update active layer index */
|
||||
int act_uv_index = CustomData_get_layer_index_n(loopdata, CD_MLOOPUV, act_uv_n);
|
||||
int act_uv_index = (act_uv_n != -1) ?
|
||||
CustomData_get_layer_index_n(loopdata, CD_MLOOPUV, act_uv_n) :
|
||||
-1;
|
||||
if (act_uv_index != -1) {
|
||||
int tan_index = CustomData_get_named_layer_index(
|
||||
loopdata, CD_TANGENT, loopdata->layers[act_uv_index].name);
|
||||
|
@ -732,7 +734,9 @@ void BKE_mesh_calc_loop_tangent_ex(const MVert *mvert,
|
|||
} /* else tangent has been built from orco */
|
||||
|
||||
/* Update render layer index */
|
||||
int ren_uv_index = CustomData_get_layer_index_n(loopdata, CD_MLOOPUV, ren_uv_n);
|
||||
int ren_uv_index = (ren_uv_n != -1) ?
|
||||
CustomData_get_layer_index_n(loopdata, CD_MLOOPUV, ren_uv_n) :
|
||||
-1;
|
||||
if (ren_uv_index != -1) {
|
||||
int tan_index = CustomData_get_named_layer_index(
|
||||
loopdata, CD_TANGENT, loopdata->layers[ren_uv_index].name);
|
||||
|
|
Loading…
Reference in New Issue