vkd3d-shader: Avoid passing NULL to memset(). (ubsan)

Otherwise ubsan reports errors such as:

    libs/vkd3d-shader/spirv.c:7266:5: runtime error: null pointer passed as argument 1, which is declared to never be null
This commit is contained in:
Francisco Casas 2024-12-18 17:02:44 -03:00 committed by Henri Verbeet
parent 7b23cd4d3c
commit 8056058aa1
Notes: Henri Verbeet 2025-01-10 20:15:12 +01:00
Approved-by: Elizabeth Figura (@zfigura)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1327
2 changed files with 5 additions and 3 deletions

View File

@ -7259,12 +7259,13 @@ static void spirv_compiler_emit_shader_epilogue_invocation(struct spirv_compiler
static void spirv_compiler_emit_hull_shader_main(struct spirv_compiler *compiler)
{
size_t table_count = compiler->offset_info.descriptor_table_count;
struct vkd3d_spirv_builder *builder = &compiler->spirv_builder;
uint32_t void_id;
/* If a patch constant function used descriptor indexing the offsets must be reloaded. */
memset(compiler->descriptor_offset_ids, 0, compiler->offset_info.descriptor_table_count
* sizeof(*compiler->descriptor_offset_ids));
if (table_count)
memset(compiler->descriptor_offset_ids, 0, table_count * sizeof(*compiler->descriptor_offset_ids));
vkd3d_spirv_builder_begin_main_function(builder);
vkd3d_spirv_build_op_label(builder, vkd3d_spirv_alloc_id(builder));

View File

@ -379,7 +379,8 @@ size_t bytecode_align(struct vkd3d_bytecode_buffer *buffer)
return aligned_size;
}
memset(buffer->data + buffer->size, 0xab, aligned_size - buffer->size);
if (aligned_size > buffer->size)
memset(&buffer->data[buffer->size], 0xab, aligned_size - buffer->size);
buffer->size = aligned_size;
return aligned_size;
}