1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Fix for 189299, stack overflow in name resolution.

This commit is contained in:
Markus Schorn 2007-06-19 11:54:30 +00:00
parent 41bb71eaa4
commit 40fbdf2c1c

View file

@ -2772,12 +2772,24 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
subName);
}
subName.setParent(result);
subName.setPropertyInParent(ICPPASTQualifiedName.SEGMENT_NAME);
((ASTNode) subName).setOffsetAndLength(
segments[i].getStartOffset(), segments[i].getEndOffset()
- segments[i].getStartOffset());
result.addName(subName);
// bug 189299, 193152 indicate that there have been nested qualified names
// as a work around just flatten them.
if (subName instanceof ICPPASTQualifiedName) {
IASTName[] subNames= ((ICPPASTQualifiedName) subName).getNames();
for (int j = 0; j < subNames.length; j++) {
subName = subNames[j];
subName.setParent(result);
subName.setPropertyInParent(ICPPASTQualifiedName.SEGMENT_NAME);
result.addName(subName);
}
}
else {
subName.setParent(result);
subName.setPropertyInParent(ICPPASTQualifiedName.SEGMENT_NAME);
((ASTNode) subName).setOffsetAndLength(segments[i].getStartOffset(),
segments[i].getEndOffset() - segments[i].getStartOffset());
result.addName(subName);
}
}
return result;
}