From 982d28cace08fad6557efd34bf0727ec371eceed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 25 Aug 2020 12:34:43 +0200 Subject: [PATCH] Fix infinite loop --- .../Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.inl | 8 +++++--- .../Nazara/VulkanRenderer/VulkanRenderPipelineLayout.inl | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.inl b/include/Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.inl index a5646b1d9..bde85f51c 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.inl +++ b/include/Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.inl @@ -27,10 +27,12 @@ namespace Nz std::size_t poolCount = m_descriptorPools.size(); if (poolCount >= 2 && m_descriptorPools.back().freeBindings.TestAll()) { - for (std::size_t i = poolCount - 1; i > 0; ++i) + for (std::size_t i = poolCount - 1; i > 0; --i) { - if (m_descriptorPools[i].freeBindings.TestAll()) - poolCount--; + if (!m_descriptorPools[i].freeBindings.TestAll()) + break; + + poolCount--; } m_descriptorPools.resize(poolCount); diff --git a/include/Nazara/VulkanRenderer/VulkanRenderPipelineLayout.inl b/include/Nazara/VulkanRenderer/VulkanRenderPipelineLayout.inl index 5dd664b5c..5b341a558 100644 --- a/include/Nazara/VulkanRenderer/VulkanRenderPipelineLayout.inl +++ b/include/Nazara/VulkanRenderer/VulkanRenderPipelineLayout.inl @@ -27,10 +27,12 @@ namespace Nz std::size_t poolCount = m_descriptorPools.size(); if (poolCount >= 2 && m_descriptorPools.back().freeBindings.TestAll()) { - for (std::size_t i = poolCount - 1; i > 0; ++i) + for (std::size_t i = poolCount - 1; i > 0; --i) { - if (m_descriptorPools[i].freeBindings.TestAll()) - poolCount--; + if (!m_descriptorPools[i].freeBindings.TestAll()) + break; + + poolCount--; } m_descriptorPools.resize(poolCount);