Fix compiler crash with empty switch statement

This commit is contained in:
drmortalwombat 2024-09-11 13:13:40 +02:00
parent f0f174e439
commit 381aaa1509

View File

@ -5302,16 +5302,19 @@ InterCodeGenerator::ExValue InterCodeGenerator::TranslateExpression(Declaration*
sexp = sexp->mRight; sexp = sexp->mRight;
} }
int i = 1, j = 1; if (switchNodes.Size() > 0)
while (i < switchNodes.Size())
{ {
if (switchNodes[i].mBlock == switchNodes[j - 1].mBlock && switchNodes[i].mLower == switchNodes[j - 1].mUpper + 1) int i = 1, j = 1;
switchNodes[j - 1].mUpper = switchNodes[i].mUpper; while (i < switchNodes.Size())
else {
switchNodes[j++] = switchNodes[i]; if (switchNodes[i].mBlock == switchNodes[j - 1].mBlock && switchNodes[i].mLower == switchNodes[j - 1].mUpper + 1)
i++; switchNodes[j - 1].mUpper = switchNodes[i].mUpper;
else
switchNodes[j++] = switchNodes[i];
i++;
}
switchNodes.SetSize(j);
} }
switchNodes.SetSize(j);
BuildSwitchTree(proc, exp, sblock, inlineMapper, vl, switchNodes, 0, switchNodes.Size(), vleft, vright, dblock ? dblock : eblock); BuildSwitchTree(proc, exp, sblock, inlineMapper, vl, switchNodes, 0, switchNodes.Size(), vleft, vright, dblock ? dblock : eblock);