From ed90d0388f1127b24e6a784bface2bcef7748be3 Mon Sep 17 00:00:00 2001 From: Nicolas James Date: Fri, 20 Feb 2026 11:32:05 +1100 Subject: Fix UB with ranges::copy_n not handling nullptr iterator --- src/layer.cc | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'src/layer.cc') diff --git a/src/layer.cc b/src/layer.cc index 15f44a7..02acb03 100644 --- a/src/layer.cc +++ b/src/layer.cc @@ -213,12 +213,10 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDevice( } auto next_extensions = std::vector{}; - if (pCreateInfo->ppEnabledExtensionNames) { - std::ranges::copy_n(pCreateInfo->ppEnabledExtensionNames, - pCreateInfo->enabledExtensionCount, - std::back_inserter(next_extensions)); - } + std::ranges::copy(std::span{pCreateInfo->ppEnabledExtensionNames, + pCreateInfo->enabledExtensionCount}, + std::back_inserter(next_extensions)); const auto wanted_extensions = { VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME, @@ -503,9 +501,9 @@ vkQueueSubmit(VkQueue queue, std::uint32_t submit_count, next_cbs.emplace_back([&]() -> auto { auto cbs = std::make_unique(); cbs->push_back(head_handle->command_buffer); - std::ranges::copy_n(submit.pCommandBuffers, - submit.commandBufferCount, - std::back_inserter(*cbs)); + std::ranges::copy(std::span{submit.pCommandBuffers, + submit.commandBufferCount}, + std::back_inserter(*cbs)); cbs->push_back(tail_handle->command_buffer); return cbs; }()); @@ -555,9 +553,9 @@ vkQueueSubmit2(VkQueue queue, std::uint32_t submit_count, .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO, .commandBuffer = head_handle->command_buffer, }); - std::ranges::copy_n(submit.pCommandBufferInfos, - submit.commandBufferInfoCount, - std::back_inserter(*cbs)); + std::ranges::copy(std::span{submit.pCommandBufferInfos, + submit.commandBufferInfoCount}, + std::back_inserter(*cbs)); cbs->push_back(VkCommandBufferSubmitInfo{ .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO, .commandBuffer = tail_handle->command_buffer, -- cgit v1.2.3