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:
parent
41bb71eaa4
commit
40fbdf2c1c
1 changed files with 18 additions and 6 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue