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;