From 0cd6d00b8652c68b932f9fff685bec61921b37cf Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 28 Oct 2015 23:44:00 +0100 Subject: [PATCH] Fix for Deserialise - don't modify serialised struct --- renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index 51765d25a..66dc4efbc 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -196,11 +196,15 @@ bool WrappedVulkan::Serialise_vkCreateDevice( VkDevice* pDevice) { SERIALISE_ELEMENT(ResourceId, physId, GetResID(physicalDevice)); - SERIALISE_ELEMENT(VkDeviceCreateInfo, createInfo, *pCreateInfo); + SERIALISE_ELEMENT(VkDeviceCreateInfo, serCreateInfo, *pCreateInfo); SERIALISE_ELEMENT(ResourceId, devId, GetResID(*pDevice)); if(m_State == READING) { + // we must make any modifications locally, so the free of pointers + // in the serialised VkDeviceCreateInfo don't double-free + VkDeviceCreateInfo createInfo = serCreateInfo; + physicalDevice = GetResourceManager()->GetLiveHandle(physId); VkDevice device;