From 749b40cb31fd7c5a123c0c909e9601cc7324081f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 6 Jul 2021 11:59:39 +0200 Subject: [PATCH] Shader: Improve variable name sanitization --- src/Nazara/Shader/Ast/SanitizeVisitor.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Nazara/Shader/Ast/SanitizeVisitor.cpp b/src/Nazara/Shader/Ast/SanitizeVisitor.cpp index 4abde83d1..b257a6182 100644 --- a/src/Nazara/Shader/Ast/SanitizeVisitor.cpp +++ b/src/Nazara/Shader/Ast/SanitizeVisitor.cpp @@ -901,13 +901,14 @@ namespace Nz::ShaderAst if (m_context->options.makeVariableNameUnique && FindIdentifier(clone->varName) != nullptr) { + // Try to append _X to the variable name until by incrementing X unsigned int cloneIndex = 2; - std::string candidateName = clone->varName + "_" + std::to_string(cloneIndex); - while (FindIdentifier(clone->varName + "_" + std::to_string(cloneIndex)) != nullptr) + std::string candidateName; + do { - cloneIndex++; - candidateName = clone->varName + "_" + std::to_string(cloneIndex); + candidateName = clone->varName + "_" + std::to_string(cloneIndex++); } + while (FindIdentifier(candidateName) != nullptr); clone->varName = std::move(candidateName); }