diff options
| author | Jay Kwak <82421531+jkwak-work@users.noreply.github.com> | 2025-01-27 10:58:01 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-27 10:58:01 -0800 |
| commit | da3dc98f96cc7be2accb5c6f86aa6f6e5502bada (patch) | |
| tree | a297ac4385f8f252a7cfc16870069fa308751d42 /source/slang/slang-ir-variable-scope-correction.cpp | |
| parent | 1f1892d033ce2938518dc7065cf5c36631919270 (diff) | |
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 <yonghe@outlook.com>
Diffstat (limited to 'source/slang/slang-ir-variable-scope-correction.cpp')
| -rw-r--r-- | source/slang/slang-ir-variable-scope-correction.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
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); } } } |
