From 8ba558f477354c5271a7e87744bc0450282f8ce4 Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Wed, 15 Mar 2017 13:13:49 -0600 Subject: layers: Fix CTS BufferView UpdateTemplate crash Change-Id: I2d03265b465ffc869f52ca85e6ad23301424a8d7 --- layers/unique_objects.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'layers/unique_objects.cpp') diff --git a/layers/unique_objects.cpp b/layers/unique_objects.cpp index c94144fc..ed8dd262 100644 --- a/layers/unique_objects.cpp +++ b/layers/unique_objects.cpp @@ -697,19 +697,18 @@ void *BuildUnwrappedUpdateTemplateBuffer(layer_data *dev_data, uint64_t descript allocation_size = std::max(allocation_size, offset + sizeof(VkDescriptorBufferInfo)); VkDescriptorBufferInfo *wrapped_entry = new VkDescriptorBufferInfo(*buffer_entry); - wrapped_entry->buffer = - reinterpret_cast(dev_data->unique_id_mapping[reinterpret_cast(buffer_entry->buffer)]); + wrapped_entry->buffer = reinterpret_cast( + dev_data->unique_id_mapping[reinterpret_cast(buffer_entry->buffer)]); template_entries.emplace_back(offset, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, reinterpret_cast(wrapped_entry)); } break; case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: { + auto buffer_view_handle = reinterpret_cast(update_entry); allocation_size = std::max(allocation_size, offset + sizeof(VkBufferView)); - VkBufferView *wrapped_entry = new VkBufferView; - *wrapped_entry = - reinterpret_cast(dev_data->unique_id_mapping[reinterpret_cast(update_entry)]); + uint64_t wrapped_entry = dev_data->unique_id_mapping[reinterpret_cast(*buffer_view_handle)]; template_entries.emplace_back(offset, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT, reinterpret_cast(wrapped_entry)); } break; @@ -736,8 +735,7 @@ void *BuildUnwrappedUpdateTemplateBuffer(layer_data *dev_data, uint64_t descript delete reinterpret_cast(source); break; case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT: - *(reinterpret_cast(destination)) = *(reinterpret_cast(source)); - delete reinterpret_cast(source); + *(reinterpret_cast(destination)) = reinterpret_cast(source); break; default: assert(0); -- cgit v1.2.3