From da3dc98f96cc7be2accb5c6f86aa6f6e5502bada Mon Sep 17 00:00:00 2001 From: Jay Kwak <82421531+jkwak-work@users.noreply.github.com> Date: Mon, 27 Jan 2025 10:58:01 -0800 Subject: Fix an incorrect iteration with a workList (#6177) * Fix an incorrect iteration with a workList We cannot modify workList while iterating it, because its type `List` is actually an array container. * Change based on the feedback * Use `Index` instead of `int` for for-loop index --------- Co-authored-by: Yong He --- source/slang/slang-ir-variable-scope-correction.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'source') diff --git a/source/slang/slang-ir-variable-scope-correction.cpp b/source/slang/slang-ir-variable-scope-correction.cpp index 2994f4d3d..d32781c5e 100644 --- a/source/slang/slang-ir-variable-scope-correction.cpp +++ b/source/slang/slang-ir-variable-scope-correction.cpp @@ -121,11 +121,12 @@ void VariableScopeCorrectionContext::_processFunction(IRFunc* funcInst) auto instAfterParam = funcInst->getFirstBlock()->getFirstOrdinaryInst(); - for (auto inst = workList.begin(); inst != workList.end(); inst++) + for (Index i = 0; i < workList.getCount(); i++) { - if (auto loopHeaderList = loopHeaderMap.tryGetValue(getBlock(*inst))) + auto inst = workList[i]; + if (auto loopHeaderList = loopHeaderMap.tryGetValue(getBlock(inst))) { - _processInstruction(dominatorTree, instAfterParam, *inst, *loopHeaderList, workList); + _processInstruction(dominatorTree, instAfterParam, inst, *loopHeaderList, workList); } } } -- cgit v1.2.3