diff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c index 4e443631ca4..cca6b40d216 100644 --- a/src/vulkan/wsi/wsi_common.c +++ b/src/vulkan/wsi/wsi_common.c @@ -641,10 +641,22 @@ void wsi_destroy_image_info(const struct wsi_swapchain *chain, struct wsi_image_info *info) { - vk_free(&chain->alloc, (void *)info->create.pQueueFamilyIndices); - vk_free(&chain->alloc, (void *)info->format_list.pViewFormats); - vk_free(&chain->alloc, (void *)info->drm_mod_list.pDrmFormatModifiers); - vk_free(&chain->alloc, info->modifier_props); + if (info->create.pQueueFamilyIndices != NULL) { + vk_free(&chain->alloc, (void *)info->create.pQueueFamilyIndices); + info->create.pQueueFamilyIndices = NULL; + } + if (info->format_list.pViewFormats != NULL) { + vk_free(&chain->alloc, (void *)info->format_list.pViewFormats); + info->format_list.pViewFormats = NULL; + } + if (info->drm_mod_list.pDrmFormatModifiers != NULL) { + vk_free(&chain->alloc, (void *)info->drm_mod_list.pDrmFormatModifiers); + info->drm_mod_list.pDrmFormatModifiers = NULL; + } + if (info->modifier_props != NULL) { + vk_free(&chain->alloc, info->modifier_props); + info->modifier_props = NULL; + } } VkResult