Merge remote-tracking branch 'origin/GP-1602-dragonmacher-decompiler-brace-stack-trace'

This commit is contained in:
Ryan Kurtz
2021-12-15 07:31:03 -05:00
@@ -354,8 +354,7 @@ public class DecompilerUtils {
public static AddressSet findClosestAddressSet(Program program, AddressSpace functionSpace, public static AddressSet findClosestAddressSet(Program program, AddressSpace functionSpace,
List<ClangToken> tokenList) { List<ClangToken> tokenList) {
AddressSet addressSet = new AddressSet(); AddressSet addressSet = new AddressSet();
for (int i = 0; i < tokenList.size(); ++i) { for (ClangToken tok : tokenList) {
ClangToken tok = tokenList.get(i);
addTokenAddressRangeToSet(addressSet, tok, functionSpace); addTokenAddressRangeToSet(addressSet, tok, functionSpace);
} }
@@ -574,12 +573,19 @@ public class DecompilerUtils {
} }
Stack<ClangSyntaxToken> braceStack = new Stack<>(); Stack<ClangSyntaxToken> braceStack = new Stack<>();
for (int i = 0; i < list.size(); ++i) { for (ClangNode element : list) {
ClangToken token = (ClangToken) list.get(i); ClangToken token = (ClangToken) element;
if (token instanceof ClangSyntaxToken) { if (!(token instanceof ClangSyntaxToken)) {
ClangSyntaxToken syntaxToken = (ClangSyntaxToken) token; continue;
}
ClangSyntaxToken syntaxToken = (ClangSyntaxToken) token;
if (startToken == syntaxToken) { if (startToken == syntaxToken) {
if (braceStack.isEmpty()) {
return null; // this can happen if the start token has a bad parent values
}
// found our starting token, take the current value on the stack // found our starting token, take the current value on the stack
ClangSyntaxToken matchingBrace = braceStack.pop(); ClangSyntaxToken matchingBrace = braceStack.pop();
return matchingBrace; return matchingBrace;
@@ -602,7 +608,6 @@ public class DecompilerUtils {
braceStack.push(syntaxToken); braceStack.push(syntaxToken);
} }
} }
}
return null; return null;
} }