mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 10:19:23 +02:00
fixed nested iteration bug
This commit is contained in:
parent
dadcb20918
commit
b127e3c91b
1 changed files with 14 additions and 11 deletions
|
@ -2341,6 +2341,7 @@ void ValueSetSolver::solve(int4 max)
|
|||
componentStack.push_back(curSet->partHead);
|
||||
curComponent = curSet->partHead;
|
||||
curComponent->isDirty = false;
|
||||
curComponent->startNode->looped(); // Reset component counter upon entry
|
||||
}
|
||||
if (curComponent != (Partition *)0) {
|
||||
if (curSet->iterate())
|
||||
|
@ -2349,7 +2350,7 @@ void ValueSetSolver::solve(int4 max)
|
|||
curSet = curSet->next;
|
||||
}
|
||||
else {
|
||||
do {
|
||||
for(;;) {
|
||||
if (curComponent->isDirty) {
|
||||
curComponent->isDirty = false;
|
||||
curSet = curComponent->startNode;
|
||||
|
@ -2358,17 +2359,19 @@ void ValueSetSolver::solve(int4 max)
|
|||
}
|
||||
break;
|
||||
}
|
||||
else {
|
||||
componentStack.pop_back();
|
||||
if (componentStack.empty()) {
|
||||
curComponent = (Partition *)0;
|
||||
curSet = curSet->next;
|
||||
break;
|
||||
}
|
||||
curComponent = componentStack.back();
|
||||
curComponent->startNode->looped();
|
||||
|
||||
componentStack.pop_back();
|
||||
if (componentStack.empty()) {
|
||||
curComponent = (Partition *)0;
|
||||
curSet = curSet->next;
|
||||
break;
|
||||
}
|
||||
} while(curComponent->stopNode == curSet);
|
||||
curComponent = componentStack.back();
|
||||
if (curComponent->stopNode != curSet) {
|
||||
curSet = curSet->next;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue