The VK pipeline cache passes a NULL bytes with a nonzero size to a
NULL-data blob to set up the size of the blob. In this case, we don't
actually execute the memcpy, so the non-existent "bytes" doesn't need to
have defined contents. Avoids a valgrind warning:
==972858== Unaddressable byte(s) found during client check request
==972858== at 0x147F4166: blob_write_bytes (blob.c:165)
==972858== by 0x147F4166: blob_write_bytes (blob.c:158)
==972858== by 0x14695FFF: vk_pipeline_cache_object_serialize (vk_pipeline_cache.c:240)
[...]
==972858== Address 0x0 is not stack'd, malloc'd or (recently) free'd
Fixes:
591da9877900 ("vulkan: Add a common VkPipelineCache implementation")
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22617>
if (! grow_to_fit(blob, to_write))
return false;
- VG(VALGRIND_CHECK_MEM_IS_DEFINED(bytes, to_write));
-
- if (blob->data && to_write > 0)
+ if (blob->data && to_write > 0) {
+ VG(VALGRIND_CHECK_MEM_IS_DEFINED(bytes, to_write));
memcpy(blob->data + blob->size, bytes, to_write);
+ }
blob->size += to_write;
return true;