aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorChris Forbes <chrisforbes@google.com>2016-03-31 16:05:02 +1300
committerTobin Ehlis <tobine@google.com>2016-03-31 13:03:26 -0600
commitfbf0c493d0c9d3a00092aa1779498a05b490b7e3 (patch)
tree03b5855979a3a3dc8814f872998761a2506357d1 /layers/core_validation.cpp
parentd7c9a35ccfa7d14df790649adab666a5ea5c04eb (diff)
downloadusermoji-fbf0c493d0c9d3a00092aa1779498a05b490b7e3.tar.xz
layers: Don't leak a VkFramebufferCreateInfo from vkCreateFramebuffer
This allocated and then immediately leaked localFBCI. Signed-off-by: Chris Forbes <chrisforbes@google.com>
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index f405bf22..d9a41448 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -8976,15 +8976,17 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(VkDevice devi
VkResult result = dev_data->device_dispatch_table->CreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
if (VK_SUCCESS == result) {
// Shadow create info and store in map
- VkFramebufferCreateInfo *localFBCI = new VkFramebufferCreateInfo(*pCreateInfo);
+ loader_platform_thread_lock_mutex(&globalLock);
+
+ auto & fbNode = dev_data->frameBufferMap[*pFramebuffer];
+ fbNode.createInfo = *pCreateInfo;
if (pCreateInfo->pAttachments) {
- localFBCI->pAttachments = new VkImageView[localFBCI->attachmentCount];
- memcpy((void *)localFBCI->pAttachments, pCreateInfo->pAttachments, localFBCI->attachmentCount * sizeof(VkImageView));
+ auto attachments = new VkImageView[pCreateInfo->attachmentCount];
+ memcpy(attachments,
+ pCreateInfo->pAttachments,
+ pCreateInfo->attachmentCount * sizeof(VkImageView));
+ fbNode.createInfo.pAttachments = attachments;
}
- FRAMEBUFFER_NODE fbNode = {};
- fbNode.createInfo = *localFBCI;
- std::pair<VkFramebuffer, FRAMEBUFFER_NODE> fbPair(*pFramebuffer, fbNode);
- loader_platform_thread_lock_mutex(&globalLock);
for (uint32_t i = 0; i < pCreateInfo->attachmentCount; ++i) {
VkImageView view = pCreateInfo->pAttachments[i];
auto view_data = dev_data->imageViewMap.find(view);
@@ -8995,9 +8997,9 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(VkDevice devi
get_mem_binding_from_object(dev_data, device, (uint64_t)(view_data->second.image), VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
&fb_info.mem);
fb_info.image = view_data->second.image;
- fbPair.second.attachments.push_back(fb_info);
+ fbNode.attachments.push_back(fb_info);
}
- dev_data->frameBufferMap.insert(fbPair);
+
loader_platform_thread_unlock_mutex(&globalLock);
}
return result;