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

Otherwise when passing "-fsanitize=undefined" to the compiler, ubsan
reports such as:

   libs/vkd3d-shader/ir.c:3794: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 16:04:15 -03:00 committed by Henri Verbeet
parent 29bac62ba2
commit eaf4d0bfbf
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 6 additions and 3 deletions

View File

@ -2031,7 +2031,8 @@ static bool shader_signature_merge(struct shader_signature *s, uint8_t range_map
element_count = s->element_count;
if (!(elements = vkd3d_malloc(element_count * sizeof(*elements))))
return false;
memcpy(elements, s->elements, element_count * sizeof(*elements));
if (element_count)
memcpy(elements, s->elements, element_count * sizeof(*elements));
for (i = 0; i < element_count; ++i)
elements[i].sort_index = i;
@ -3836,7 +3837,8 @@ static enum vkd3d_result vsir_cfg_structure_list_append_from_region(struct vsir_
sizeof(*list->structures)))
return VKD3D_ERROR_OUT_OF_MEMORY;
memcpy(&list->structures[list->count], begin, size * sizeof(*begin));
if (size)
memcpy(&list->structures[list->count], begin, size * sizeof(*begin));
list->count += size;

View File

@ -396,7 +396,8 @@ size_t bytecode_put_bytes_unaligned(struct vkd3d_bytecode_buffer *buffer, const
buffer->status = VKD3D_ERROR_OUT_OF_MEMORY;
return offset;
}
memcpy(buffer->data + offset, bytes, size);
if (size)
memcpy(&buffer->data[offset], bytes, size);
buffer->size = offset + size;
return offset;
}