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);
} }
subName.setParent(result); // bug 189299, 193152 indicate that there have been nested qualified names
subName.setPropertyInParent(ICPPASTQualifiedName.SEGMENT_NAME); // as a work around just flatten them.
((ASTNode) subName).setOffsetAndLength( if (subName instanceof ICPPASTQualifiedName) {
segments[i].getStartOffset(), segments[i].getEndOffset() IASTName[] subNames= ((ICPPASTQualifiedName) subName).getNames();
- segments[i].getStartOffset()); for (int j = 0; j < subNames.length; j++) {
result.addName(subName); 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; return result;
} }