diff options
| author | Nicolas James <Eele1Ephe7uZahRie@tutanota.com> | 2026-02-20 11:32:05 +1100 |
|---|---|---|
| committer | Nicolas James <Eele1Ephe7uZahRie@tutanota.com> | 2026-02-20 11:32:05 +1100 |
| commit | ed90d0388f1127b24e6a784bface2bcef7748be3 (patch) | |
| tree | cc4b59d0a15492d2c5f6b509962a2c1812491f88 | |
| parent | 350a85a375dc71d62953f31d282a05dfd3d79f4e (diff) | |
Fix UB with ranges::copy_n not handling nullptr iterator
| -rw-r--r-- | src/layer.cc | 20 | ||||
| -rw-r--r-- | src/queue_context.cc | 9 |
2 files changed, 14 insertions, 15 deletions
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<const char*>{}; - 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_t>(); 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, diff --git a/src/queue_context.cc b/src/queue_context.cc index e210685..6968720 100644 --- a/src/queue_context.cc +++ b/src/queue_context.cc @@ -55,10 +55,11 @@ void QueueContext::notify_submit( auto signals = std::unordered_set<VkSemaphore>{}; auto waits = std::unordered_set<VkSemaphore>{}; - std::ranges::copy_n(info.pWaitSemaphores, info.waitSemaphoreCount, - std::inserter(waits, std::end(waits))); - std::ranges::copy_n(info.pSignalSemaphores, info.signalSemaphoreCount, - std::inserter(signals, std::end(signals))); + std::ranges::copy(std::span{info.pWaitSemaphores, info.waitSemaphoreCount}, + std::inserter(waits, std::end(waits))); + std::ranges::copy( + std::span{info.pSignalSemaphores, info.signalSemaphoreCount}, + std::inserter(signals, std::end(signals))); std::cerr << "submit1 notif for queue " << this->queue << '\n'; std::cerr << " signals: \n"; |
