From 24ad3356ddabcca325ab4325d15cd8c1c3bddd26 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 29 Oct 2015 15:44:34 +0100 Subject: [PATCH] Deserialise fix - make sure scoping doesn't delete data we need --- renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp index 4fa40a45b..55c39262f 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp @@ -359,12 +359,13 @@ bool WrappedVulkan::Serialise_vkUpdateDescriptorSets( SERIALISE_ELEMENT(ResourceId, devId, GetResID(device)); SERIALISE_ELEMENT(bool, writes, writeCount == 1); - VkWriteDescriptorSet writeDesc; - VkCopyDescriptorSet copyDesc; + VkWriteDescriptorSet writeDesc = { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, 0 }; + VkCopyDescriptorSet copyDesc = { VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET, 0}; if(writes) { SERIALISE_ELEMENT(VkWriteDescriptorSet, w, *pDescriptorWrites); writeDesc = w; + w.pDescriptors = NULL; // take ownership of the descriptors (we will delete manually) } else { @@ -459,6 +460,8 @@ bool WrappedVulkan::Serialise_vkUpdateDescriptorSets( // don't want to implement this blindly RDCUNIMPLEMENTED("Copying descriptors not implemented"); } + + delete[] writeDesc.pDescriptors; // delete serialised descriptors array } return true;