From: Rhys Perry Date: Wed, 27 Sep 2023 13:23:09 +0000 (+0100) Subject: nir/lower_shader_calls: skip zero-sized qsort X-Git-Tag: upstream/23.3.3~348 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1afd0878e98aedeadd4f27186e5080bb33f55f67;p=platform%2Fupstream%2Fmesa.git nir/lower_shader_calls: skip zero-sized qsort Fixes UBSan: src/compiler/nir/nir_lower_shader_calls.c:1681:7: runtime error: null pointer passed as argument 1, which is declared to never be null Signed-off-by: Rhys Perry Reviewed-by: Timur Kristóf Part-of: --- diff --git a/src/compiler/nir/nir_lower_shader_calls.c b/src/compiler/nir/nir_lower_shader_calls.c index c10f930..d9e2a33 100644 --- a/src/compiler/nir/nir_lower_shader_calls.c +++ b/src/compiler/nir/nir_lower_shader_calls.c @@ -1678,10 +1678,12 @@ nir_opt_sort_and_pack_stack(nir_shader *shader, } /* Sort scratch item by component size. */ - qsort(util_dynarray_begin(&ops), - util_dynarray_num_elements(&ops, struct scratch_item), - sizeof(struct scratch_item), - sort_scratch_item_by_size_and_value_id); + if (util_dynarray_num_elements(&ops, struct scratch_item)) { + qsort(util_dynarray_begin(&ops), + util_dynarray_num_elements(&ops, struct scratch_item), + sizeof(struct scratch_item), + sort_scratch_item_by_size_and_value_id); + } /* Reorder things on the stack */ _mesa_hash_table_u64_clear(value_id_to_item);