diff options
| author | Gabríel Arthúr Pétursson <gabriel@system.is> | 2018-03-20 21:37:56 +0000 |
|---|---|---|
| committer | Dave Houlton <daveh@lunarg.com> | 2018-04-04 16:16:14 -0600 |
| commit | bd6c0d64e053529cf7947582a5b960bcfee538e6 (patch) | |
| tree | c9de5ee41363990435702a6eea245d7b412f2582 /layers/unique_objects.cpp | |
| parent | 504338b109df2dc7d2a4677aed996bef4991980e (diff) | |
| download | usermoji-bd6c0d64e053529cf7947582a5b960bcfee538e6.tar.xz | |
layers: Fix memleak in unique object's debug functions
Diffstat (limited to 'layers/unique_objects.cpp')
| -rw-r--r-- | layers/unique_objects.cpp | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/layers/unique_objects.cpp b/layers/unique_objects.cpp index 51bf57ce..6b6c0615 100644 --- a/layers/unique_objects.cpp +++ b/layers/unique_objects.cpp @@ -465,9 +465,8 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateSwapchainKHR(VkDevice device, const VkSwapc } VkResult result = my_map_data->dispatch_table.CreateSwapchainKHR(device, local_pCreateInfo->ptr(), pAllocator, pSwapchain); - if (local_pCreateInfo) { - delete local_pCreateInfo; - } + delete local_pCreateInfo; + if (VK_SUCCESS == result) { std::lock_guard<std::mutex> lock(global_lock); *pSwapchain = WrapNew(*pSwapchain); @@ -498,7 +497,7 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateSharedSwapchainsKHR(VkDevice device, uint32 } VkResult result = dev_data->dispatch_table.CreateSharedSwapchainsKHR(device, swapchainCount, local_pCreateInfos->ptr(), pAllocator, pSwapchains); - if (local_pCreateInfos) delete[] local_pCreateInfos; + delete[] local_pCreateInfos; if (VK_SUCCESS == result) { std::lock_guard<std::mutex> lock(global_lock); for (uint32_t i = 0; i < swapchainCount; i++) { @@ -579,7 +578,7 @@ VKAPI_ATTR VkResult VKAPI_CALL QueuePresentKHR(VkQueue queue, const VkPresentInf } } - if (local_pPresentInfo) delete local_pPresentInfo; + delete local_pPresentInfo; return result; } @@ -873,62 +872,62 @@ VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice p VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(VkDevice device, const VkDebugMarkerObjectTagInfoEXT *pTagInfo) { layer_data *device_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); - auto local_tag_info = new safe_VkDebugMarkerObjectTagInfoEXT(pTagInfo); + safe_VkDebugMarkerObjectTagInfoEXT local_tag_info(pTagInfo); { std::lock_guard<std::mutex> lock(global_lock); - auto it = unique_id_mapping.find(reinterpret_cast<uint64_t &>(local_tag_info->object)); + auto it = unique_id_mapping.find(reinterpret_cast<uint64_t &>(local_tag_info.object)); if (it != unique_id_mapping.end()) { - local_tag_info->object = it->second; + local_tag_info.object = it->second; } } VkResult result = device_data->dispatch_table.DebugMarkerSetObjectTagEXT( - device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT *>(local_tag_info)); + device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT *>(&local_tag_info)); return result; } VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT(VkDevice device, const VkDebugMarkerObjectNameInfoEXT *pNameInfo) { layer_data *device_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); - auto local_name_info = new safe_VkDebugMarkerObjectNameInfoEXT(pNameInfo); + safe_VkDebugMarkerObjectNameInfoEXT local_name_info(pNameInfo); { std::lock_guard<std::mutex> lock(global_lock); - auto it = unique_id_mapping.find(reinterpret_cast<uint64_t &>(local_name_info->object)); + auto it = unique_id_mapping.find(reinterpret_cast<uint64_t &>(local_name_info.object)); if (it != unique_id_mapping.end()) { - local_name_info->object = it->second; + local_name_info.object = it->second; } } VkResult result = device_data->dispatch_table.DebugMarkerSetObjectNameEXT( - device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT *>(local_name_info)); + device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT *>(&local_name_info)); return result; } // VK_EXT_debug_utils VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectTagEXT(VkDevice device, const VkDebugUtilsObjectTagInfoEXT *pTagInfo) { layer_data *device_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); - auto local_tag_info = new safe_VkDebugUtilsObjectTagInfoEXT(pTagInfo); + safe_VkDebugUtilsObjectTagInfoEXT local_tag_info(pTagInfo); { std::lock_guard<std::mutex> lock(global_lock); - auto it = unique_id_mapping.find(reinterpret_cast<uint64_t &>(local_tag_info->objectHandle)); + auto it = unique_id_mapping.find(reinterpret_cast<uint64_t &>(local_tag_info.objectHandle)); if (it != unique_id_mapping.end()) { - local_tag_info->objectHandle = it->second; + local_tag_info.objectHandle = it->second; } } VkResult result = device_data->dispatch_table.SetDebugUtilsObjectTagEXT( - device, reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT *>(local_tag_info)); + device, reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT *>(&local_tag_info)); return result; } VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectNameEXT(VkDevice device, const VkDebugUtilsObjectNameInfoEXT *pNameInfo) { layer_data *device_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); - auto local_name_info = new safe_VkDebugUtilsObjectNameInfoEXT(pNameInfo); + safe_VkDebugUtilsObjectNameInfoEXT local_name_info(pNameInfo); { std::lock_guard<std::mutex> lock(global_lock); - auto it = unique_id_mapping.find(reinterpret_cast<uint64_t &>(local_name_info->objectHandle)); + auto it = unique_id_mapping.find(reinterpret_cast<uint64_t &>(local_name_info.objectHandle)); if (it != unique_id_mapping.end()) { - local_name_info->objectHandle = it->second; + local_name_info.objectHandle = it->second; } } VkResult result = device_data->dispatch_table.SetDebugUtilsObjectNameEXT( - device, reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT *>(local_name_info)); + device, reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT *>(&local_name_info)); return result; } |
